에 메모리를 할당, 내가내가 2 차원 배열에 메모리를 할당하고 2 차원 배열
int *array[size];
for(int i=0;;i++)
{
array[i]=new int[10];
}
내가 바로 그 일을하고있는 깊이를 알아?
에 메모리를 할당, 내가내가 2 차원 배열에 메모리를 할당하고 2 차원 배열
int *array[size];
for(int i=0;;i++)
{
array[i]=new int[10];
}
내가 바로 그 일을하고있는 깊이를 알아?
아니요, 루프가 size
번만 실행되도록 for(int i=0; i<size; i++)
이 필요합니다. 그러나 이것이 이것을하기위한 가장 우아한 방법은 아닙니다.
vector<vector<int> > array;
이 Using arrays or std::vectors in C++, what's the performance gap?
나머지는 괜찮습니까? – user1838070
예, 나머지는 정상입니다. – Yang
@ user1838070, 음,'std :: vector'처럼 메모리를 관리 할 무언가로 바꾸는 것을 고려해야합니다. – chris
는 동적 2 차원 배열 또는에 힙에 대한 포인터의 배열을 하시겠습니까 참조 : C++에서는, 우리가 메모리 관리를 방지하기 위해 STL에게 vector
의 대신 배열을 사용하는 것이 좋습니다 스택?
스택의 힙에 대한 포인터 배열은 사용자가 원하는대로 계속 수행됩니다 (다른 포스터가 제안한 것처럼).
동적 2d 배열의 경우 How do I declare a 2d array in C++ using new?.
그런 식으로 매트릭스를 구현해서는 안됩니다. 정말로. 치수가 변경되지 않는 한 제발하지 마십시오.
더 좋은 방법은 다음과 같습니다
이template<typename Ty>
class matrix {
public:
const unsigned dim_x, dim_y;
private:
Ty* const data;
public:
matrix(const unsigned dim_x, const unsigned dim_y)
: dim_x(dim_x), dim_y(dim_y), data(new Ty[dim_x *dim_y])
{}
~matrix() {
delete[] data;
}
const Ty at(unsigned i, unsigned j) const {
return data[i + j*dim_x];
}
Ty& at(unsigned i, unsigned j) {
return data[i + j*dim_x];
}
};
그리고 바로 매트릭스 클래스와 데이터에 액세스 할 수 있습니다.
는 나는 내가 그것에 대해 말았 블로그 게시물 하나의 벡터가 가지고있는 것처럼 here
가 왜 그냥,'at' operatior을 가진 개체에 포장을 썼다? 이렇게하면 코드 전체에 행렬 메트릭을 가질 필요가 없습니다. –