プロが教えるわが家の防犯対策術!

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

A 回答 (1件)

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

    • good
    • 1
この回答へのお礼

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

#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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!