注册 登录
编程论坛 C++教室

有关容器问题

tfg0116 发布于 2008-10-24 16:11, 901 次点击
#include<iostream>
#include<list>
#include<vector>
 
using namespace std;
 
int main()
{
    char *sa[] = {"tianfuguo", "lijing", "liufeng", "zhaoqian", "liuyingna"};
    list<char*> clst(sa, sa + 5);
    vector<string> svec;
    svec.assign(clst.begin(), clst.end());
    for(list<char*>::iterator lit = clst.begin();
        lit != clst.end(); ++lit)
            cout<<*lit<<'\t';
        cout<<endl;
        for(vector<string>::iterator vit = svec.begin();
            vit != svec.end(); ++vit)
                cout<<*vit<<'\t';
            cout<<endl;
            return 0;
}
这段程序中为什么svec.assign(clst.begin(), clst.end());这句错了啊? 应该如何修改。
一下是错误信息
Compiling...
lianxi8cpp.cpp
D:\vc++\MSDev98\MyProjects\lianxi8cpp\lianxi8cpp.cpp(158) : error C2664: 'void __thiscallstd::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
Error executing cl.exe.

lianxi8cpp.obj - 1 error(s), 0 warning(s)
5 回复
#2
很远的那颗星2008-10-24 20:46
楼主用VC6编译器?????
#3
很远的那颗星2008-10-24 20:47
我的编译器GCC通过...
#4
sunkaidong2008-10-24 21:01
#include<iostream>
#include<list>
#include<vector>

using namespace std;

int main()
{
    char *sa[] = {"tianfuguo", "lijing", "liufeng", "zhaoqian", "liuyingna"};
    list<char*> clst(sa, sa + 5);
    vector<string> svec;
    svec.assign(clst.begin(), clst.end());
    for(list<char*>::iterator lit = clst.begin(); lit != clst.end(); ++lit)
        cout<<*lit<<'\t';
        cout<<endl;
    for(vector<string>::iterator vit = svec.begin(); vit != svec.end(); ++vit)
        cout<<(*vit).c_str()<<'\t';
        cout<<endl;
        system("pause");
        return 0;
}
#5
sunkaidong2008-10-24 21:02
注意string类输出是要转换成指针的
#6
tfg01162008-10-25 20:43
回复 2# 很远的那颗星 的帖子
恩,是的,gcc编译器得在unix系统中装吧
1