나는 그것이 전 세계 여러 번 논의 된 매우 오래된 논쟁임을 알고있다. 그러나 현재 특정 경우에 정적 및 동적 배열간에 다른 방법을 사용해야하는 방식을 결정하는 데 문제가 있습니다. 사실, 나는 C++ 11을 사용하지 않았다. 정적 배열을 사용했을 것이다. 그러나 나는 둘 다로 동등한 이점이있을 수 있기 때문에 지금 혼란 스럽다.정적 배열 VS. C++ 11의 동적 배열
최초의 솔루션 :
template<size_t N>
class Foo
{
private:
int array[N];
public:
// Some functions
}
두 번째 솔루션 : 나는이 자신의 장점이 있기 때문에 선택하는 일이 없습니다
template<size_t N>
class Foo
{
private:
int* array;
public:
// Some functions
}
:
- 정적 배열이 빠릅니다을, 우리는 메모리 관리에 전혀 신경 쓰지 않습니다.
- 동적 배열은 메모리가 할당되지 않은 한 아무 것도 계산하지 않습니다. 그런 다음에는 정적 배열보다 사용하기가 쉽지 않습니다. 하지만 C++ 11 이후에는 정적 배열에 사용할 수없는 이동 의미론에서 큰 이점을 얻을 수 있습니다.
나는 하나의 좋은 해결책이 있다고 생각하지 않지만 몇 가지 조언을 듣고 싶습니다. 아니면 모든 것을 생각하고 있는지 알고 싶습니다.
두 가지 솔루션은 다음 중 하나 여야합니다. 첫 번째 솔루션 또는 첫 번째 솔루션 또는 벡터 및 size_t 템플릿이 없어야합니다.STL 컨테이너를 아무런 문제없이 사용할 수있는 곳에서는 원시 포인터를 사용하지 않아야합니다. – mfontanini
@fontanini : C++ 11을 수정하려면 두 개의 솔루션이'std :: array'또는'std :: vector '이어야합니다. –
@ DavidRodríguez-dribeas 예! – mfontanini