
c++容器问题,高手过来帮一下,谢谢!
用assign函数编写程序将一个list容器的所有元素赋值给一个vector容器,其中list容器中存储的是指向C风格字符串的char*指针,而vector容器的元素则是...
用assign函数编写程序将一个list容器的所有元素赋值给一个vector容器,其中list容器中存储的是指向C风格字符串的char*指针,而vector容器的元素则是string类型。下面是我写的:
#include <iostream>
using namespace std;
#include <list>
#include <vector>
#include <string>
int main()
{
char *str[]={"hello","ni","hao","hehe"};
list<char*> l(str,str+4);
vector<string> v;
list<char*>::iterator i=l.begin(),j=l.end();
v.assign(i,j);
for(vector<string>::iterator iter=v.begin();iter!=v.end();++iter)
{
cout<<*iter<<ends;
}
cout<<endl;
return 0;
}
运行的时候总是出现一个错误:
D:\Program Files\Microsoft Visual Studio\MyProjects\h\h.cpp(12) : error C2664: 'void __thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,str
uct std::char_traits<char>,class std::allocator<char> > > >::assign(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator
<char> > *)' : cannot convert parameter 1 from 'class std::list<char *,class std::allocator<char *> >::iterator' to 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
执行 cl.exe 时出错.
貌似assign函数必须要两个容器一样才能赋值,但是书上明明写的“可通过assign操作实现将vector容器中一段char*类型的元素赋给string类型的list容器”(C++ Primer第四版),郁闷中…………
希望哪位高手帮一下,谢谢!
我用的是visual c++ 6.0,昨晚下了个visual studio 2008,总是出错 ,连最简单的一个hello world程序都弄不成功,不知道是我自己不会用,还是编译器的问题. 展开
#include <iostream>
using namespace std;
#include <list>
#include <vector>
#include <string>
int main()
{
char *str[]={"hello","ni","hao","hehe"};
list<char*> l(str,str+4);
vector<string> v;
list<char*>::iterator i=l.begin(),j=l.end();
v.assign(i,j);
for(vector<string>::iterator iter=v.begin();iter!=v.end();++iter)
{
cout<<*iter<<ends;
}
cout<<endl;
return 0;
}
运行的时候总是出现一个错误:
D:\Program Files\Microsoft Visual Studio\MyProjects\h\h.cpp(12) : error C2664: 'void __thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,str
uct std::char_traits<char>,class std::allocator<char> > > >::assign(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator
<char> > *)' : cannot convert parameter 1 from 'class std::list<char *,class std::allocator<char *> >::iterator' to 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
执行 cl.exe 时出错.
貌似assign函数必须要两个容器一样才能赋值,但是书上明明写的“可通过assign操作实现将vector容器中一段char*类型的元素赋给string类型的list容器”(C++ Primer第四版),郁闷中…………
希望哪位高手帮一下,谢谢!
我用的是visual c++ 6.0,昨晚下了个visual studio 2008,总是出错 ,连最简单的一个hello world程序都弄不成功,不知道是我自己不会用,还是编译器的问题. 展开
展开全部
你用assign的时候,用每一个char* 构造一个string放进去,就行了。
list<char*>::iterator i=l.begin(),j=l.end();
v.assign(i,j);
改成
list<char*>::iterator i;
for(i=l.begin();i<=j;i++)
v.push_back(string(*i));
这个我没调过,但是这样做应该可以。
list<char*>::iterator i=l.begin(),j=l.end();
v.assign(i,j);
改成
list<char*>::iterator i;
for(i=l.begin();i<=j;i++)
v.push_back(string(*i));
这个我没调过,但是这样做应该可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询