list、vector、deque互相拷贝
#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互相拷贝的更多相关文章
- stl 中List vector deque区别
stl提供了三个最基本的容器:vector,list,deque. vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此 它能非常好的支持随 ...
- vector deque list
vector ,deque 和 list 顺序性容器: 向量 vector : 是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可 ...
- 顺序容器:vector,deque,list
1.顺序容器:vector,deque,list 容器类共享公共接口,只要学会其中一种类型就能运用另一种类型.每种容器提供一组不同的时间和功能这种方案,通常不需要修改代码,秩序改变类型声明,每一种容器 ...
- c++ 标准库的各种容器(vector,deque,map,set,unordered_map,unordered_set,list)的性能考虑
转自:http://blog.csdn.net/truexf/article/details/17303263 一.vector vector采用一段连续的内存来存储其元素,向vector添加元素的时 ...
- STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)
一.Stack(栈) 这个没啥好说的,就是后进先出的一个容器. 基本操作有: stack<int>q; q.push(); //入栈 q.pop(); //出栈 q.top(); //返回 ...
- std::vector的分片拷贝和插入
一般我们在用Qt的QByteArrary或者List的时候,会有相应的append的方法,该函数,就是把数据加入末尾.但是std::vector就没有相应的方法.但是我们可以用insert方法来实现: ...
- STL之vector,deque学习实例
``` #include<iostream> #include<algorithm> #include<ctime> #include<vector> ...
- vector,deque,list的区别和使用
vector: 表示一段连续的内存区域,每个元素被顺序存储在这段内存中,对vector的随机访问效率很高,但对非末尾元素的插入和删除则效率非常低. deque: 也表示N段连续的内存区域组成,但与ve ...
- [STL] Implement "vector", ”deque“ and "list"
vector “可增的”数组 vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似. 不同的地方就是: (1) 数组是静态分配空间,一旦分配了空间的大小,就不可再改变了: (2) v ...
随机推荐
- maven使用中遇到的问题
一>手动将jar包安装到仓库的命令示例: 首先:编写命令:mvn install:install-file -Dfile=D:\lucene-highlighter-4.10.2.jar -Dg ...
- idea操作快捷键
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...
- 开始编写Golang代码
介绍 本文主要讲述如何写一个简单的Go包和如何使用golang的工具,如何获取.编译和安装Go的包,以及如何使用go的命令. Go的工具需要将代码按照一定的方式来组织.所以请认真阅读本文. 代码的组织 ...
- C++之引用和指针
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7050431.html C++之引用和指针 C++引用 引用的基本用法: in ...
- (转)如何最佳地使用memcached?
转自:http://os.51cto.com/art/201205/335034_all.htm Memcached是由DangaInteractive开发的,高性能的,分布式的内存对象缓存系统,如何 ...
- Android 如何通过浏览器打开App
首先给出参考资料http://my.oschina.net/liucundong/blog/354029?p=3#rpl_291191828 通过浏览器直接打开Android应用程序 Android ...
- nodeclub config
配置文件,本来想着分成好几个文件,放在一个文件夹中,后来觉得也没必要,原因是,配置文件看一遍也就记住了,分开反而显得繁琐,注释写清楚就好. // 路径模块 var path = require('pa ...
- OpenStack Kilo版加CEPH部署手册
OpenStack Kilo版加CEPH部署手册 作者: yz联系方式: QQ: 949587200日期: 2015-7-13版本: Kilo 转载地址: http://mp.weixin.qq.co ...
- EBS 取消“是否提交另一项请求”提示
在使用EBS提交请求后,总要弹出“是否提交另一项请求”的提示,而我们往往选择“否”,这个提示就显得多余. 为了减轻这“多一步”的负担,取消“是否提交另一项请求”的提示,设置方法如下: 以下profil ...
- DELPHI微信支付代码
DELPHI微信支付代码 不管是微信支付还是支付宝支付, 3个最棘手的问题是:1,如何生成签名2,支付请求如何提交3, 如何验证签名 下面就围绕这二个问题来讲. 我使用的是XE3. 先看微信支付: ...