2013-08-01 2 views
14

루프 내에서 빈 벡터를 만들고 루프에 뭔가를 읽을 때마다 벡터에 요소를 추가하려고합니다.루프에서 빈 벡터에 요소를 추가하는 방법은 무엇입니까?

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 
    std::vector<float> myVector(); 

    float x; 
    while(cin >> x) 
     myVector.insert(x); 

    return 0; 
} 

하지만이 오류 메시지가 표시됩니다.

+0

오류 메시지가 무엇입니까? –

+6

가장 까다로운 구문 분석 문제. myVector의 선언으로 괄호를 제거하십시오. – Joel

+0

네, 제 정확한 문제였습니다. 그리고 지금은 push_back 감사를 사용해야한다는 것을 이해합니다! –

답변

17

대신 std::vector::push_back()를 사용해야합니다 :

while(cin >> x) 
    myVector.push_back(x); 
//   ^^^^^^^^^ 

하지 std::vector::insert()을하는, 당신이 할 수 링크에 표시된 요소를 삽입하려는 위치를 나타내는 반복자가 필요합니다.

또한 what @Joel has commented으로 벡터 변수의 정의에서 괄호를 제거해야합니다.

std::vector<float> myVector; 

하지

std::vector<float> myVector(); 

후자를함으로써, 당신은 C++의 Most Vexing Parse 문제로 실행합니다.

2

사용 push_back :

while(cin >> x) 
    myVector.push_back(x); 

insert 함수 삽입 위치를 나타내는 첫번째 인수 반복자 걸린다.

또한, myVector의 선언에 괄호를 제거해야합니다

std::vector<float> myVector; 
+0

문제는 내가 메서드를 사용하기로 결정할 때마다 다음과 같은 오류 메시지가 계속 나타납니다. "myVector에서 myVector가 표준이 아닌 클래스를 요청합니다 :" –

+0

@AmberRoxanna std :: vector 사용 myVector ; 대신'std :: vector myVector();' – Yang

0

myVector.insert()을 사용하려는 경우 은 myVector.insert(myVector.end(), x)과 같이 사용하십시오. 이렇게하면 myVector 끝에 x가 추가됩니다. 처음에 x를 myVector.insert(myVector.begin(), x)까지 삽입 할 수 있습니다.

관련 문제