C++ unique问题!!!望各位大佬看看!!!

图片说明

问题:unique操作完成之后不应该还是会显示全部元素嘛,为什么针对这个样例会出现"123"被替换成空行的情况,是我写bug了还是什么其他问题,望各位大佬指教(其他样例都是可以的,比如{ "ABC","ABC","AAA" },unique之后还是显示这3个)

#include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<sstream>
#include<list>
#include<forward_list>
#include<deque>
#include<queue>
#include<set>
#include<algorithm>
#include<numeric>
using namespace std;
void solve(vector<string>& str) 
{
    sort(str.begin(), str.end());
    for (int i = 0; i < str.size(); i++)
        cout << str[i] << endl;
    cout << "***************\n";


    vector<string>::iterator tar = unique(str.begin(), str.end());
    for (int i = 0; i < str.size(); i++)
        cout << str[i] << endl;


    cout << "***************\n";
    str.erase(tar, str.end());
    for (int i = 0; i < str.size(); i++)
        cout << str[i] << endl;
}
int main(int argc, char** argv)
{
    vector<string>str{ "123","123" ,"456"};
    solve(str);
    return 0;
}

https://blog.csdn.net/vocaloid01/article/details/80482531