erase与unique结实用于删除反复元素
添加时间:2013-6-7 点击量:
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);
}
cout<<请输入;
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)即可完成删除
}
原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
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);
}
cout<<请输入;
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)即可完成删除
}
原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#