如何在C++中删除向量中的重复元素(不需要排序)

5
我有一个向量,用户输入一些字符串。我想保留用户输入的顺序,但删除任何重复的单词。我在网上找到的唯一方法是使用sort和unique,但由于我无法对向量进行排序,所以我陷入了困境。提前感谢您的帮助。
例如, 用户输入 -> hello there dog cat hello cat book
向量应该是 -> hello there dog cat book
目前我只有...
string s; 
vector <string> myVec; 

while (cin >> s){
 myVec.push_back(s); 
}

{code to sort vector}
1个回答

10

除了您的vector之外,您还可以测试这个单词是否已经存在于std::set<std::string>中,如果是,则忽略它,否则将其插入两个容器:

while (cin >> s)
    if (mySet.insert(s).second) // newly inserted in set?
        myVec.push_back(s);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接