我想了解STL算法。STL - 复制混合容器
复制的定义是:
template<class InputIterator, class OutputIterator>
OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result)
能有人请解释为什么当载体&双端混合了以下工作,但是当载体和台混合失败。
#include <iostream>
#include <algorithm>
#include <vector>
#include <deque>
#include <deque>
#include <set>
using namespace std;
int main() {
int myints[]={10,20,30,40,50,60,70};
vector<int> myvector;
vector<int>::iterator it;
set<int> mset(myints,myints+8);
set<int>::iterator setItr = mset.begin();
deque<int> deq;
deq.resize(10);
deque<int>::iterator deqItr = deq.begin();
myvector.resize(7); // allocate space for 7 elements
copy (myints, myints+7, myvector.begin());
copy (myvector.begin(), myvector.end(), deqItr);
cout << "deque contains:";
for (deque<int>::iterator dit=deq.begin(); dit!=deq.end(); ++dit)
cout << " " << *dit;
cout << endl;
//copy (myvector.begin(), myvector.end(), setItr);
return 0;
}
据我所知,vector/deque有随机访问迭代器,其中set有双向迭代器。我不明白为什么当只需要输入/输出迭代器时编译失败。
PS:这只是一项实验,以提高我的理解:)
感谢您的解释,由于排序问题,它是有意义的。 – 2011-03-06 19:40:49