こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

listをvectorにコピーするときに

例えば
#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());
としていますが少し不細工です
他に方法はあるのでしょうか?

投稿日時 - 2004-09-20 17:07:43

QNo.1009556

暇なときに回答ください

質問者が選んだベストアンサー

vu.assign(lu.begin(),lu.end());

投稿日時 - 2004-09-20 18:17:21

お礼

ありがとうございます
下記検査で動く事が分かりました
これですっきりします

#include<iostream>
#include<string>
#include<vector>
#include<list>
using namespace std;
void main(void)
{
unsignedpos;
list<unsigned>lu;
list<unsigned>::iteratorp;
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;
}

投稿日時 - 2004-09-20 18:55:08

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)