我想了解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