C 배열 대신 C++ 벡터를 사용하려고하지만 몇 가지 문제가 있습니다. 이건 내 코드입니다 :std :: vector의 요소 제거 <std::string>
size_t i;
//Filter save files
for (i = 0; i != files.size(); i++){
cout << files.at(i).find(FILE_HEAD) << ' ' << files.at(i) << endl;
if ((files.at(i).find(FILE_HEAD) != 0)){
files.erase(files.begin() + i);
}
}
cout << "Found files:\n";
for (i = 0; i != files.size(); i++){
cout << i << " - " << files.at(i) << endl;
}
files
가 std::vector<std::string>
내가 FILE_HEAD
를 포함하는 모든 요소를 제거합니다. 그러나 이것은 제대로 작동하지 않습니다. 내 테스트에서 file.size()
은 14이지만 7 회만 있습니다. 누구든지 나를 도울 수 있습니까? 고맙습니다!
사용'표준 : remove_if'합니다. – chris
요소를 제거하면 벡터의 유효 크기가 감소합니다. 이렇게하면 고정 for 루프에 문제가 발생할 수 있습니다. 빠른 대안을 얻으려면 거꾸로 반복하십시오. 더 나은 아직, 다른 제안을 따르십시오. – Ben