2014-02-09 3 views
51

내가구조체의 벡터 벡터를 초기화하는 방법은 무엇입니까?

vector< vector<int> > A; 

내가 그것을 어떻게 초기화해야되는 N × N 행렬이 있다면? 내가 성공하지 시도했습니다

:

A = new vector(dimension); 

도 :

A = new vector(dimension,vector<int>(dimension)); 
+1

당신은 아마해야 입문서를 참고하십시오. new는 할당 된 것에 대한 포인터를 반환합니다 (어쨌든 여기서는 필요하지 않습니다). – Borgleader

+0

벡터 > MyMatrix [4] [4]; // works also as – Mich

+3

이 질문은 중복되지 않습니다. 상상 속의 링크 된 사본은 다른 질문을위한 것으로서,이 질문에 대한 답변도 있지만이 질문을 검색 할 때는 찾을 수 없습니다. –

답변

103

당신은 동적 할당을 수행 할 수 new를 사용합니다. 동적으로 할당 된 객체를 가리키는 포인터를 반환합니다.

A은 자동 변수이므로 new을 사용할 이유가 없습니다. 이처럼

vector<vector<int> > A(dimension, vector<int>(dimension)); 
+0

좋아, 문제가 발견됐다. 나는 그 벡터를 가진 지적 구조체를 가지고 있다고 언급하지 않았다. 그리고 뭐라고하는지 : myStructVble-> A (치수, 벡터 (dimension)); , 그것은 나를 "함수가 일치하지 않는다"던졌습니다. – anat0lius

+3

@LiLou_ 구조체의 생성자를 초기화해야합니다. 또는 임시에서 멤버로 복사 : myStructVble-> A = 벡터 > (치수, 벡터 (dimension)); –

14

: 당신은 단순히 생성자를 사용하여 A을 초기화 할 수

#include <vector> 

// ... 

std::vector<std::vector<int>> A(dimension, std::vector<int>(dimension)); 

(. 사전은-C는 꺾쇠 괄호 사이에 공백을 떠날 필요 ++ 11)

관련 문제