#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. p1 批梯度下降算法

    (蓝色字体:批注:绿色背景:需要注意的地方:橙色背景是问题) 一,机器学习分类 二,梯度下降算法:2.1模型   2.2代价函数   2.3 梯度下降算法 一,机器学习分类 无监督学习和监督学习 无监 ...

  2. 1.6getId()方法

    getId()方法的作用是取得线程的唯一标识. package com.cky.test; /** * Created by chenkaiyang on 2017/12/2. */ public c ...

  3. MVC 图片上传 带进度条(转)

    MVC 图片上传小试笔记 form.js 这个插件已经是很有名的,结合MVC的html辅助方法异步上传就很简单了.jQuery Form Plugin :http://www.malsup.com/j ...

  4. java基础-day26

    第03天 java基础加强 今日内容介绍 u BeanUtils概述及使用 u XML简介及约束 u XML解析 第1章   XML简介 1.1  XML基本语法 1.1.1 XML概述 XML全称为 ...

  5. [ 9.12 ]CF每日一题系列—— 960B暴力数组

    Description: 给你两个数组,顺序一定,问你第一个数组连续的几个值等于下一个数组连续的几个值,然后寻找这个值得最大值,也就是满足就换 Solution: 用两个变量索引,判断即可 #incl ...

  6. DDL和DML的区别

    DML(data Manipulation Language)数据库操纵语言: 使用范围:对数据库中的数据进行一些简单的操作,如IDUS(增删改查) DDL(Data Definiton Langua ...

  7. [转载]腾讯专家:论高级DBA的自我修养

    作者介绍: 张秀云:2007年开始从事运维方面的工作,经历过网络管理员.linux运维工程师.DBA.分布式存储运维等多个IT职位.对linux运维.mysql数据库.分布式存储有丰富的经验.2012 ...

  8. node-webkit学习(2)基本结构和配置

    node-webkit学习(2)基本结构和配置 文/玄魂 目录 node webkit学习(2)基本结构和配置 前言 2.1  基本程序结构 2.2  package.json 2.2.1 必须的配置 ...

  9. MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟

    本来MySQL BINLOG和mysqldump命令属于八竿子打不着的两个事物,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复 ...

  10. vs2017常用快捷键

    项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示 Solution Explorer(解决方案资源管理器) Ctrl + Shift + A = ...