2012-11-29 2 views
1

ifstream의 정수를 2 차원 벡터에 동적으로 추가하기 위해 push_back을 사용하려고합니다. 기본적으로 입력 비슷한에 공급됩니다fstream에서 2d 벡터로 정수 입력>< vector<int>> C++

3 
20 3 
30 4 
40 5 
3 
50 6 
60 7 
70 8 

내가 스스로 (3,3 .. 등)에 의해 INT의의를 읽은 다음 자신에 의해 수의 쌍합니다 (INT 년대의 2D 벡터를 만들려면 몇 쌍이 될지 설명하십시오.) 지금은 getline()을 사용하고 char에 숫자를 저장 한 다음 다시 int로 변환하지만 이상적이지 않을 수도 있습니다. 누군가가 어떤 아이디어라도 가지고 있다면 나는 그것을 고맙게 생각할 것이다. (테스트되지 않은) 같은

+1

그것은 당신이 원하는 것을 조금 불분명하다. 여러분이 묘사 한 내용은 3D 벡터,'{{{20, 3}, {30,4}, {40,5}}, {{50,6}, {60,7}, {70,8 }}}'. 아니면 실제로'벡터 <벡터 <쌍 >>'을 원합니까? –

+0

@sftrabbit '벡터 <벡터 >>'은 나에게 3 차원처럼 들리고, 세 번째 것은 정확히 두 단위의 크기 (길이?)로 제한됩니다. –

답변

0

뭔가 :

std::istream_iterator<int> eos; 
std::vector<std::vector<int>> matrix; 
while(std::getline(str, line)) 
{ 
    std::istringstream istr(line); 
    std::istream_iterator<int> iin(istr); 
    std::vector<int> columns; 
    std::back_insert_iterator<vector<int>> back_it(columns); 
    std::copy(iin, eos, back_it); 
    matrix.push_back(columns); 
} 
관련 문제