Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119040
  • 博文数量: 29
  • 博客积分: 1215
  • 博客等级: 中尉
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-05 16:29
文章分类
文章存档

2010年(29)

我的朋友

分类: C/C++

2010-12-20 22:42:20

预备知识:
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  
阅读(4203) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-22 14:15:24

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com