※ ChatGPTを利用し、要約された質問です(原文:listをvectorにコピーするときに)
listをvectorにコピーする方法は?
このQ&Aのポイント
C++の場合、listをvectorにコピーする際にエラーが発生することがあります。
一つの方法は、listとvectorのイテレータを使用して要素をコピーすることです。
具体的なコードは、vu.clear(); vu.insert(vu.begin(), lu.begin(), lu.end());です。
例えば
#include<iostream>
#include<vector>
#include<list>
using namespace std;
void main(void)
{
unsigned pos;
list<unsigned> lu;
list<unsigned>::iterator p;
vector<unsigned> vu;
for(lu.clear(),pos=0;pos<9;lu.push_back(pos++));
for(p=lu.begin();p!=lu.end();cout<<*p++);
cout<<endl;
vu=vector(lu); //error
for(pos=0;pos<vu.size();cout<<vu[pos++]);
cout<<endl;
}
とするとエラーになるため//errorのかわりに
vu.clear();
vu.insert(vu.begin(),lu.begin(),lu.end());
としていますが少し不細工です
他に方法はあるのでしょうか?
お礼
ありがとうございます 下記検査で動く事が分かりました これですっきりします #include<iostream> #include<string> #include<vector> #include<list> using namespace std; void main(void) { unsigned pos; list<unsigned> lu; list<unsigned>::iterator p; vector<unsigned> vu; for(lu.clear(),pos=0;pos<9;lu.push_back(pos++)); cout<<"複写元:"; for(p=lu.begin();p!=lu.end();cout<<*p++);cout<<endl; for(vu.clear(),pos=0;pos<9;vu.push_back(8-pos++)); cout<<"処理前:"; for(pos=0;pos<vu.size();cout<<vu[pos++]);cout<<endl; vu.assign(lu.begin(),lu.end()); cout<<"処理後:"; for(pos=0;pos<vu.size();cout<<vu[pos++]);cout<<endl; }