2011-10-16 4 views
-1

내 컴파일러가 불평합니다.std :: vector에서 요소 제거 <std::string>>

#include <iostream> 
#include <vector> 
using namespace std; 

int main(){ 

     vector<string> vec[2]; 
     vec[0].push_back("test1"); 
     vec[0].push_back("test2"); 

     cout << vec[0][0] << endl; 
     vec[0].erase(vec.begin()); 
     cout << vec[0][1] << endl; 

} 

지우기를 호출하면 어떤 점이 좋습니까?

+0

정확한 코드를 게시하십시오. – curiousguy

답변

4

vecvector<string>의 배열입니다. 난 당신과 같이 vec[0].begin()을 의미 믿습니다

vec[0].erase(vec[0].begin()); 
0
vec[0].erase(vec[0].begin()); 
    cout << vec[0][1] << endl; 

첫 번째 요소를 삭제 한 후, 단 하나의 왼쪽이있다. 이 요소는 위치 0에 있으며 이는 인덱스 1이 오프 경계 -> 정의되지 않은 동작임을 의미합니다.

+0

벡터에서 정의되지 않은 동작, 범위를 벗어나는 예외입니다. –

+3

@Kernald : 범위 밖은'.at (1)'에만 던져 질 것입니다. – jpalecek

관련 문제