首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL assign不能传到迭代器

2012-09-03 
STL assign不能传入迭代器以下是代码:C/C++ code#include iostream#include string#include list#in

STL assign不能传入迭代器
以下是代码:
 

C/C++ code
  #include <iostream>#include <string>#include <list>#include <vector>using namespace std;int main(){       char* a[]={"a","b","c","d","e","f","g"};        list<char*> ilist(a,a+7);    vector<string>  ivec;    list<char*>::iterator it1=ilist.begin();    while(it1!=ilist.end())    {        cout<<*it1<<" ";        ++it1;    }      ivec.assign(ilist.begin(),ilist.end());    vector<string>::iterator it2=ivec.begin();    while(it2!=ivec.end())    {        cout<<*it2<<" ";        ++it2;    }    return 0;}

将一个list容器的所有元素拷贝给vector容器,可是在assign这行报错如下:

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,struct 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

说类型不匹配,怎么回事,可是容器的assign确实提供了传入两个迭代器的操作啊?
在VC6.0下测试的,难道是编译器的问题?

[解决办法]
g++-4.7 试了一下,没问题。疑似 vc6 自己的毛病。
[解决办法]
珍惜生命,远离VC6这个垃圾货

热点排行