Le but de mon programme de test est d'effacer une cellule dans un simple vecteur de chaînes comme ci-dessous. Le programme échoue (erreur de segmentation).std :: remove ne fonctionne pas
static void display(std::vector<std::string> const &vec)
{
std::vector<std::string>::const_iterator It = vec.begin();
for (; It != vec.end(); ++It)
std::cout << *It << " ";
std::cout << std::endl;
}
int main(void)
{
std::vector<std::string> vec;
size_t index = 0;
vec.push_back("Toto");
vec.push_back("Titi");
vec.push_back("Tata");
vec.push_back("Tutu");
display(vec);
std::vector<std::string>::iterator It = vec.begin();
for (size_t idx = 0; It != vec.end(); ++It, idx++)
if (!(*It).compare("Tutu"))
index = idx;
vec.erase(std::remove(vec.begin(), vec.end(), index), vec.end()); //Segmentation fault
display(vec);
getchar();
return (0);
}
Quelqu'un peut-il m'aider? Merci d'avance pour votre aide.
Ne pas vous devez passer une chaîne à 'remove'? – chris
Lisez à propos des arguments pour 'remove' plus attentivement. Il ne prend pas d'indice. –