c++用unique函数后容器里的值都为0
#include
#include
#include
using namespace std;
int main()
{
vector<int>q;
q.push_back(0);
q.push_back(1);
q.push_back(3);
q.push_back(3);
q.push_back(67);
q.push_back(353);
q.push_back(353);
q.push_back(12);
q.push_back(88);
sort(q.begin(), q.end());
vector<int>::iterator it = q.begin();
cout << "没删除相同元素:";
for (int i = 0; i < q.size(); i++)
cout << *it++ << " ";
cout << endl;
it = q.begin();
for (int i = 0; i < q.size(); i++)
{
it++=unique(q.begin(), q.end());
}
it = q.begin();
cout << "删除相同元素:";
for (int i = 0; i < q.size(); i++)
cout << *it << " ";
cout << endl;
return 0;
}
运行结果是:
没删除相同元素:0 1 3 3 12 67 88 353 353
删除相同元素:0 0 0 0 0 0 0 0 0
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> q;
q.push_back(0);
q.push_back(1);
q.push_back(3);
q.push_back(3);
q.push_back(67);
q.push_back(353);
q.push_back(353);
q.push_back(12);
q.push_back(88);
sort(q.begin(), q.end());
vector<int>::iterator it = q.begin();
cout << "没删除相同元素:";
for (int i = 0; i < q.size(); i++)
cout << *it++ << " ";
cout << endl;
// it = q.begin();
vector<int>::iterator it_end = unique(q.begin(), q.end());
// for (int i = 0; i < q.size(); i++)
// {
// it++=unique(q.begin(), q.end());
// }
it = q.begin();
cout << "删除相同元素:";
while (it < it_end) //for (int i = 0; it < it_end; i++, it++) //
cout << *it++ << " ";//
cout << endl;
return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> q{0, 1, 3, 3, 67, 353, 353, 12, 88};
std::sort(q.begin(), q.end());
#ifdef __WIN64
system("chcp 65001");
#endif
std::cout << "没删除相同元素:";
std::for_each(q.begin(), q.end(), [](int num) { std::cout << num << ' '; });
std::cout << std::endl;
auto it = std::unique(q.begin(), q.end());
std::cout << "删除相同元素:";
std::for_each(q.begin(), it, [](int num) { std::cout << num << ' '; });
std::cout << std::endl;
return 0;
}