unique_copy复制有关问题
unique_copy复制问题
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
#include <iterator>
#include <numeric>
using namespace std;
typedef list<int>::iterator pv;
void put(const vector<int>& vec)
{
vector<int>::const_iterator it = vec.begin();
vector<int>::const_iterator itend = vec.end();
while (it != itend)
{
cout << *it << " " ;
it++;
}
cout << endl;
}
int main()
{
vector<int> vec,vv;
int word;
list<int> lst;
while (cin >> word)
{
lst.push_back(word);
}
pv it = lst.begin();
pv itend = lst.end();
unique_copy(it,itend,back_inserter(vv));
//将lst中不重复的对象复制到vv中,但是为什么结果还有重复值呢,输入1 2 3 4 1 2 3 4 put(vv);
return 0;
}
------解决方案--------------------
因为你没看函数详细说明就看了名字就猜功能。
买本《STL源码剖析》吧
------解决方案--------------------
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
#include <iterator>
#include <numeric>
using namespace std;
typedef list<int>::iterator pv;
void put(const vector<int>& vec)
{
vector<int>::const_iterator it = vec.begin();
vector<int>::const_iterator itend = vec.end();
while (it != itend)
{
cout << *it << " " ;
it++;
}
cout << endl;
}
int main()
{
vector<int> vec,vv;
int word;
list<int> lst;
while (cin >> word)
{
lst.push_back(word);
}
pv it = lst.begin();
pv itend = lst.end();
unique_copy(it,itend,back_inserter(vv));
//将lst中不重复的对象复制到vv中,但是为什么结果还有重复值呢,输入1 2 3 4 1 2 3 4 put(vv);
return 0;
}
------解决方案--------------------
因为你没看函数详细说明就看了名字就猜功能。
买本《STL源码剖析》吧
------解决方案--------------------
- C/C++ code
template <class InputIterator, class OutputIterator> OutputIterator unique_copy ( InputIterator first, InputIterator last, OutputIterator result ) { *result=*first; while (++first != last) { if (!(*result == *first)) // or: if (!pred(*result,*first)) for the pred version *(++result)=*first; } return ++result; }
------解决方案--------------------