STL中的unique只能把重复的元素全部放到容器末端,并不能真正把重复元素删除. 这里使用unique 和 erase 则可达到彻底删除效果。
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
void print(string temp)
{
cout<<temp<<endl;
}
int main()
{
vector<string> test;
vector<string>::iterator pos;
string temp;
for (int i=0; i<6;++i)
{
cin>>temp;
test.push_back(temp);
}
cin>>temp;
pos=remove(test.begin(),test.end(),temp);//仅仅把temp值赋空并且放到最后一位 没有彻底删除
// remove返回最后一个未被移除元素的下一位置
test.erase(pos,test.end()); //删除pos到test.end()的所有元素
for_each(test.begin(),test.end(),print);
//若然test是list<string> 则直接 test.remove(temp)即可完成彻底删除
}
自我学习。