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 ...
随机推荐
- C# 编码标准(一)
一直想写一个自己用的代码标准,经过一段时间的优秀开源源码的观察和看其他人写的标准,感觉好的代码给人感觉就是舒服,也非常重要.所以把它们记录归纳总结,以备以后忘记,另外平时写代码的时候可以拿来参考下.下 ...
- UVa 10870 Recurrences (矩阵快速幂)
题意:给定 d , n , m (1<=d<=15,1<=n<=2^31-1,1<=m<=46340).a1 , a2 ..... ad.f(1), f(2) .. ...
- HDU 5656 CA Loves GCD (容斥)
题意:给定一个数组,每次他会从中选出若干个(至少一个数),求出所有数的GCD然后放回去,为了使自己不会无聊,会把每种不同的选法都选一遍,想知道他得到的所有GCD的和是多少. 析:枚举gcd,然后求每个 ...
- Java数组、集合
Vector类 类似C#的ArrayList.可扩展的数组,带有一些特定方法 Hashtable类 与C#的类似 Enumeration接口 类似C#的枚举器
- Flash网页小游戏开发教程
架设服务器 地图 程序员
- Android-Java-单例模式优化&多线程并发
上一篇博客,Android-Java单例模式,介绍了在真实开发过程中,普遍使用的几种单例模式,而今天这篇博客,将要对单利模式进行优化 并且 通过多线程并发来分析 单利模式的优化: 对于为什么会出现安全 ...
- zeppelin中运行spark streaming kakfa & 实时可视化
notebook方式运行spark程序是一种比较agile的方式,一方面可以体验像spark-shell那样repl的便捷,同时可以借助notebook的作图能力实现快速数据可视化,非常方便快速验证和 ...
- ServiceStack NetCoreAppSettings 配置文件读取和设置
假设Node和npm已经安装 npm install -g @servicestack/cli 执行命令dotnet-new selfhost SSHost 这样就创建了ServiceStack的控制 ...
- WPF MeasureOverride和 ArrangeOverride做个 页面导航
public class NavigationPanel:Panel { protected override Size MeasureOverride(Size availableSize) { S ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...