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这个垃圾货