文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>将一个容器中的元素赋值给另一个不同类型的容器

将一个容器中的元素赋值给另一个不同类型的容器

时间:2010-12-20  来源:longmenyu

预备知识: 1.c.assign(b,e):重新设置c的元素:将b和e标记的范围内的所有元素复制到c中。b和e必须不是指向c中元素的迭代器; 2.c.aggign(n,t):将容器c重新设置为存储n个值为t的元素; 3.assign操作首先删除容器中所有的元素,然后将其参数所指定的新元素插入到该容器中。如果在不同(或相同)类型的容器内,元素类型不相同但是相互兼容,则其赋值运算必须使用assign函数。例如,可通过assign操作实现将vector容器中一段char*类型的元素赋给string类型的list容器; 4.assign操作使左操作数容器的所有迭代器失效。

下面的程序将一个list容器中的所有元素赋值给一个vector容器,其中list容器中存储的是指向c风格字符串的char*指针,而vector容器的元素则是string类型(《C++ Primier》习题9.28)。
程序清单:

#include <iostream>
#include <vector>
#include <list>
#include <string>

using namespace std;

int main(int argc,char *argv[])
{
    char *sa[] = {"Yulingui","zhouyujia","gouyongpan","sunlin"};
    list<char*> clist(sa,sa+4);
    vector<string> svec;
    string str;

    /*将list对象中的所有元素赋值给vector对象*/
    svec.assign(clist.begin(),clist.end());

    /*输出list对象中的所有元素*/
    for (list<char*>::iterator lit=clist.begin();lit!=clist.end();
          ++lit)
    {
        cout<<*lit<<" ";
    }
    cout<<endl;

    /*输出vector对象中的所有元素*/
    for(vector<string>::iterator vit=svec.begin();vit!=svec.end();
        ++vit)
    {
        cout<<*vit<<" ";
    }
    cout<<endl;

    return 0;
}

编译运行程序后,输出结果: Yulingui   zhouyujia   gouyongpan   sunlin    Yulingui   zhouyujia   gouyongpan   sunlin  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载