c++用unique函数后容器里的值都为0

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;
}