#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <vector>
#include <list>
#include <deque>
using namespace std; //利用模版进行输出
template <typename Tv>
void print_v(vector<Tv> a)
{
//输出方法1
for(auto i:a)
{
cout<<i<<'\t';
}
cout<<endl;
//输出方法2
typename vector<Tv>::iterator it;//前面要加typename,要不会出错
for(it=a.begin();it!=a.end();it++)
{
cout<<*it<<'\t';
}
cout<<endl;
}
template <typename Tl>
void print_l(list<Tl> a)
{
//输出方法1
for(auto i:a)
{
cout<<i<<'\t';
}
cout<<endl;
//输出方法2
typename list<Tl>::iterator it;//前面要加typename,要不会出错
for(it=a.begin();it!=a.end();it++)
{
cout<<*it<<'\t';
}
cout<<endl;
}
template <typename Tq>
void print_q(deque<Tq> a)
{
//输出方法1
for(auto i:a)
{
cout<<i<<'\t';
}
cout<<endl;
//输出方法2
typename deque<Tq>::iterator it;//前面要加typename,要不会出错
for(it=a.begin();it!=a.end();it++)
{
cout<<*it<<'\t';
}
cout<<endl;
} int main()
{
//copy list to list
list<string> l={"","","",""};
list<string> l_1(l);//方法1
list<string> l_2;
copy(l.begin(), l.end(), back_inserter(l_2));//方法2
cout<<"l_1:\n";
print_l(l_1);
cout<<"l_2:\n";
print_l(l_2);
cout<<"----------------------------------------------"<<endl; //copy vector to vector
vector<string> v={"v1","v2","v3","v4"};
vector<string> v_1(v);//方法1
vector<string> v_2;
copy(v.begin(), v.end(), back_inserter(v_2));//方法2
cout<<"v_1:\n";
print_v(v_1);
cout<<"v_2:\n";
print_v(v_2);
cout<<"----------------------------------------------"<<endl; //copy list to vector
list<string> list1={"","","",""};
vector<string> vector1;
copy(list1.begin(), list1.end(), back_inserter(vector1));
cout<<"vector1:\n";
print_v(vector1);
cout<<"----------------------------------------------"<<endl; //copy vector to list
vector<string> vector2={"v1","v2","v3","v4"};
list<string> list2;
copy(vector2.begin(), vector2.end(), back_inserter(list2));
cout<<"list2:\n";
print_l(list2);
cout<<"----------------------------------------------"<<endl; //copy deque to vector
deque<string> deque3(,"abc");
vector<string> vector3;
copy(deque3.begin(), deque3.end(), back_inserter(vector3));
cout<<"vector3:\n";
print_v(vector3);
cout<<"----------------------------------------------"<<endl; //copy vector to deque
deque<string> deque4;
vector<string> vector4(,"dfg");
copy(vector4.begin(), vector4.end(), back_inserter(deque4));
cout<<"deque4:\n";
print_q(deque4);
cout<<"----------------------------------------------"<<endl; //copy deque to list
deque<string> deque5(,"dfg");
list<string> list5;
copy(deque5.begin(), deque5.end(), back_inserter(list5));
cout<<"list5:\n";
print_l(list5);
cout<<"----------------------------------------------"<<endl; //copy vector to deque
deque<string> deque6;
list<string> list6(,"dfg");
copy(list6.begin(), list6.end(), back_inserter(deque6));
cout<<"deque6:\n";
print_q(deque6);
cout<<"----------------------------------------------"<<endl;
return ;
} 

list、vector、deque互相拷贝的更多相关文章

  1. stl 中List vector deque区别

    stl提供了三个最基本的容器:vector,list,deque.         vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此     它能非常好的支持随 ...

  2. vector deque list

    vector ,deque 和 list 顺序性容器: 向量 vector :   是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可 ...

  3. 顺序容器:vector,deque,list

    1.顺序容器:vector,deque,list 容器类共享公共接口,只要学会其中一种类型就能运用另一种类型.每种容器提供一组不同的时间和功能这种方案,通常不需要修改代码,秩序改变类型声明,每一种容器 ...

  4. c++ 标准库的各种容器(vector,deque,map,set,unordered_map,unordered_set,list)的性能考虑

    转自:http://blog.csdn.net/truexf/article/details/17303263 一.vector vector采用一段连续的内存来存储其元素,向vector添加元素的时 ...

  5. STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)

    一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回 ...

  6. std::vector的分片拷贝和插入

    一般我们在用Qt的QByteArrary或者List的时候,会有相应的append的方法,该函数,就是把数据加入末尾.但是std::vector就没有相应的方法.但是我们可以用insert方法来实现: ...

  7. STL之vector,deque学习实例

    ``` #include<iostream> #include<algorithm> #include<ctime> #include<vector> ...

  8. vector,deque,list的区别和使用

    vector: 表示一段连续的内存区域,每个元素被顺序存储在这段内存中,对vector的随机访问效率很高,但对非末尾元素的插入和删除则效率非常低. deque: 也表示N段连续的内存区域组成,但与ve ...

  9. [STL] Implement "vector", ”deque“ and "list"

    vector “可增的”数组 vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似. 不同的地方就是: (1) 数组是静态分配空间,一旦分配了空间的大小,就不可再改变了: (2) v ...

随机推荐

  1. 软件推荐-国内参数优化软件:1stOpt - First Optimizationg

    首页:http://www.7d-soft.com/index.htm 4.0新功能 (预定2010年8月6日): 1:支持复数拟合.复数方程组计算: 2:支持微分方程拟合求解: 3:通用全局优化求解 ...

  2. java混淆代码的使用

    前言:为了保护我们的劳动成果,我们来学习java混淆代码工具的使用. 1.下载retroguard.jar 进入http://www.retrologic.com/retroguard-downloa ...

  3. JVM、JRE,JDK

    JVM解释class     Java虚拟机,解释编译后的class文件给系统..java代码编译成 .class机器指令,就能在JVM运行了,直接到硬件执行,实现了跨平台,只要操作系统安装了JVM, ...

  4. Mybatis类型转换介绍

    1.1     目录 1.2     建立TypeHandler 1.2.1    TypeHandler接口 1.2.2    BaseTypeHandler抽象类 1.3     注册TypeHa ...

  5. libtool 创建库的工具

    libtool 创建库的工具 1. 背景 在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的用法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样. 对于开发人 ...

  6. spring boot 整合 mybatis 以及原理

    同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...

  7. iOS cell左滑出现多个功能按钮(IOS8以后支持)

    #import "ViewController.h" #import "Swift_OC-Swift.h" @interface ViewController ...

  8. [logic]逻辑整理

    圈子详情页面:    1.加入圈子(*)        1.已登录,直接添加        2.未登录,登陆框    2.发表新帖(*)        1.已登录,直接跳转        2.未登录, ...

  9. 关于Java-枚举的总结

    枚举 枚举的定义 枚举也是JDK5.0的新特性. JDK5.0加入了一个全新类型的“类”——枚举类型. 为此引入了一个新的关键字enum. 可以这样来定义一个枚举类型: public enum Col ...

  10. Delphi获取公网IP地址函数

    uses IdHTTP; function GetPublicIP: string; var strIP, URL: string; iStart, iEnd: Integer; MyIdHTTP: ...