런타임에 vector
의 크기를 결정할 수 있습니까? 예를 들어런타임에 벡터 크기를 결정하는 방법은 무엇입니까?
입력 : 25 // 벡터의 크기 당신은 (아마도) 잘못된 방법으로 vector
을 사용하는
code :
int N ;
cin << N ;
vector <int> data[N];
런타임에 vector
의 크기를 결정할 수 있습니까? 예를 들어런타임에 벡터 크기를 결정하는 방법은 무엇입니까?
입력 : 25 // 벡터의 크기 당신은 (아마도) 잘못된 방법으로 vector
을 사용하는
code :
int N ;
cin << N ;
vector <int> data[N];
... 당신은 C 스타일 배열을 정의하는 방법을 보여줍니다한다 당신은 아마 정의 할 때, N 벡터 (N은 컴파일시에 알려질 필요가 있기 때문에 그런데, 그 구문은 표준되지 않습니다)는이 방법으로 이루어집니다 N
요소를 포함 vector
:
vector<int> data(N);
를
: 당신은 단지 그 방법
size()
호출 할 필요가 런타임
1에서 크기를 얻으려면
(N
요소 긴 기본 초기화 배열을 만듭니다 vector
의 한 매개 변수의 생성자를 호출)
cout<<"The vector contains "<<data.size()<<" elements.\n"
사실
vector
의 크기 때문에 (의도 그것에 저장된 요소의 수)는 런타임에만 정의됩니다. 당신이 관심을 가질만한downvoter 마음이 설명할까요? –
두 가지 방법 :
std::vector<T>::size
는 벡터의 요소의 수를 반환합니다.
std::vector<T>::capacity
은 벡터가 메모리를 할당 한 요소 수를 반환합니다.
예 니펫을
std::vector<int> v;
for (int i =0; i < 25; ++i)
v.push_back (i);
v.reserve (100);
std::cerr << "Elements: " << v.size () << std::endl;
std::cerr << "Capacity: " << v.capacity() << std::endl;
출력
Elements: 25
Capacity: 100
내가 원래 게시물에 귀하의 예제 조각이 적어도 하나의 오타가 포함되어 있음을 추측하고있어을 신고하지 마세요.과 N
요소를 아래에 작성하십시오.
당신이 작성한 데이터는 vector<int>
크기가 N
이고, N이 컴파일 타임에 알려 지거나 컴파일러에 가변 길이 배열 확장이있는 경우 컴파일됩니다.
vector<int> data[N];
는
vector
를 생성하고 처음부터
N
요소를 삽입하기 :
std::vector<int> data (N);
Matteo이 권리입니다. 그의 대답에 덧붙여 라. 런타임에 벡터 크기를 반드시 정의 할 필요는 없습니다. 나는 당신이 C++을 사용하고 있다고 가정하고있다.
단지
data.push_back(<some integer>)
당신이 그들에게 크기를 줄 필요가 배열을 좋아하지 그것의 할 당신은
vector<int> data;
을 쓴 후마다 당신은 벡터의 끝에 요소에 원하는 사용하기 전에. 벡터는 동적으로 커지고 축소 될 수 있습니다. 따라서 메모리 할당에 신경 쓸 필요가 없습니다. 런타임시 컴파일러와 vector
클래스에 의해 처리됩니다.
당신은 거의 다 있습니다
사용
vector <int> data(N);
대신
vector <int> data[N];
당신이 -1
, 말, 0이 아닌 값으로 벡터의 모든 요소를 설정해야하는 경우 , 사용하십시오 vector <int> data(N, -1);
[std :: vector :: size()] (http : // w ww.cplusplus.com/reference/stl/vector/size/)? –
런타임에는 크기 N (컴파일시 알 수 없음)의 벡터를 만들 수 없습니다. –
@fatai 아마도'std :: vector'가 아니라 'array'를 의미했을 것입니다. – dasblinkenlight