练习10.9:
#include <iostream>
using namespace std;
#include <vector>
#include <string>
#include <list>
#include <algorithm>
void elimDups(vector<int>& v)
{
sort(v.begin(), v.end());
for (auto c : v)
{
cout << c << " ";
}
cout << endl;
auto end_unique = unique(v.begin(), v.end());
for (auto c : v)
{
cout << c << " ";
}
cout << endl;
v.erase(end_unique, v.end());
for (auto c : v)
{
cout << c << " ";
}
cout << endl;
}
int main()
{
vector<int>v = { 1,6,2,65,4,6,72,99,36,23 };
elimDups(v);
system("pause");
return 0;
}
注意:unique只是遍历了整个容器,然后把连续的重复元素向左合并成一个元素。并没有“把重复的元素添加到容器末尾”的功能(某些文章)。unique返回的迭代器之后的元素值是未指定的,我们不知道是什么,但是肯定有。
练习10.10:
算法是泛型算法,是使用迭代器来操作容器的,对所有容器都一样。使用泛型算法操作容器时,我们不需要知道容器的类型。但是增删容器数据,我们不知道容器是什么就不知道要分配或者回收多少空间