2013-05-10 2 views

답변

1

아니요, 루프가 size 번만 실행되도록 for(int i=0; i<size; i++)이 필요합니다. 그러나 이것이 이것을하기위한 가장 우아한 방법은 아닙니다.

vector<vector<int> > array; 

Using arrays or std::vectors in C++, what's the performance gap?

+0

나머지는 괜찮습니까? – user1838070

+0

예, 나머지는 정상입니다. – Yang

+0

@ user1838070, 음,'std :: vector'처럼 메모리를 관리 할 무언가로 바꾸는 것을 고려해야합니다. – chris

0

는 동적 2 차원 배열 또는에 힙에 대한 포인터의 배열을 하시겠습니까 참조 : C++에서는, 우리가 메모리 관리를 방지하기 위해 STL에게 vector의 대신 배열을 사용하는 것이 좋습니다 스택?

스택의 힙에 대한 포인터 배열은 사용자가 원하는대로 계속 수행됩니다 (다른 포스터가 제안한 것처럼).

동적 2d 배열의 경우 How do I declare a 2d array in C++ using new?.

0

그런 식으로 매트릭스를 구현해서는 안됩니다. 정말로. 치수가 변경되지 않는 한 제발하지 마십시오.

더 좋은 방법은 다음과 같습니다

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