C++STL中的向量vector
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef vector<int> vt;
int main()
{
int i;
vt v1(10); //定义向量10个元素,注意每个元素初始化为了0
for (i = 0; i < 10; i++)
cout << v1[i] << " ";
cout << endl;
//---输出0 0 0 0 0 0 0 0 0 0
int a[9] = { 1, 3, 2, 4, 6, 7, 8, 3,6 };
vt v2(a, a + 8);//将数组a的第一个元素到第8个元素作为v2初始化值
for (vector<int>::iterator it = v2.begin(); it != v2.end(); it++)
cout << *it << " ";
cout << endl;
//使用迭代器iterator遍历的方法输出向量元素,输出为1 3 2 4 6 7 8 3
//插入函数insert(),能在向量中指定位置插入一个元素
//--------------------------------------------------------------------------------------
//插入前结果 1 3 2 4 6 7 8 3
v2.insert(v2.begin(), 4);//在v2开头(下标为0的元素)前面插入数据4
//插入后结果 4 1 3 2 4 6 7 8 3
v2.insert(v2.begin() + 2, 5);//把数据5插入到下标为2处
//插入后结果 4 1 5 3 2 4 6 7 8 3
v2.insert(v2.end(), 18);//在v2最后插入数据18
//插入后结果 4 1 5 3 2 4 6 7 8 3 18
//---------------------------------------------------------------------------------------
//删除函数erase(),能在向量中指定位置插入几个元素
vt v3(a, a + 8);
v3.erase(v3.begin()+2);//删除下标为2的元素
for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
cout << *it << " ";
cout << endl;
//----输出结果1 3 4 6 7 8 3
v3.erase(v3.begin() + 1, v3.begin() +3);//左闭右开删除下标为1(包括1)到下标为3(不保存3)之间元素
for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
cout << *it << " ";
cout << endl;
//----输出结果1 6 7 8 3
v3.erase(v3.end()-1);//删除末尾元素,由于右开特性,*(v3.end()-1)才是左后一个元素
for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
cout << *it << " ";
cout << endl;
//----输出结果1 6 7 8
//---调用clear()函数清空向量
v3.clear();
cout << v3.size() << endl; //输出为0
//------------------------------------------------------------------------------------------
//--sort()函数对向量进行(默认)升序排序包含于头文件#include<algorithm>中
vt v4(a, a + 9);
sort(v4.begin(), v4.end());
for (i = 0; i < 9; i++)
cout << v4[i] << " ";
cout << endl;
//输出1 2 3 3 4 6 6 7 8
}
C++STL中的向量vector的更多相关文章
- 标准模板库中的向量(vector)
//C++数据结构与算法(第4版) Adam Drozdek 著 徐丹 吴伟敏<<清华大学出版社>> 头文件:#include<vector> 向量是最简单的S ...
- C++中STL中简单的Vector的实现
该vector只能容纳标准库中string类, 直接上代码了,StrVec.h文件内容为: #ifndef STRVEC_H #define STRVEC_H #include<iostream ...
- STL中list和vector在添加元素时push_back会调用拷贝构造函数
#include <iostream> #include <list> #include <vector> #include <cstring> usi ...
- C++ STL中vector(向量容器)使用简单介绍
原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相 ...
- STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...
- 【转】STL中vector、list、deque和map的区别
1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...
- DLL中传递STL参数(如Vector或者list等)会遇到的问题[转载]
最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况.这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中 ...
- C++的STL中vector内存分配方法的简单探索
STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux CentOS 5.2 1.代码 #include <vector> #include <stdio ...
- [转]STL中vector转数组(实际是数组的指针)
感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.ht ...
随机推荐
- PHP实现图片上传并压缩
本文实例讲解了PHP图片上传并压缩的实现方法,分享给大家供大家参考,具体内容如下 使用到三个文件 connect.php:连接数据库 test_upload.php:执行SQL语句 upload_im ...
- C#中不用安装Oracle客户端连接Oracle数据库(转)
原文地址:http://www.cnblogs.com/jiangguang/archive/2013/02/19/2916882.html 0.首先,从Oracle网站上下载对应版本的Oracle ...
- [洛谷P3805]【模板】manacher算法
题目大意:给你一个字符串,求出它的最长回文字段 题解:$manacher$算法 卡点:$p$数组未开两倍空间 C++ Code: #include <cstdio> #include &l ...
- BZOJ4031 [HEOI2015]小Z的房间 【矩阵树定理 + 高斯消元】
题目链接 BZOJ4031 题解 第一眼:这不裸的矩阵树定理么 第二眼:这个模\(10^9\)是什么鬼嘛QAQ 想尝试递归求行列式,发现这是\(O(n!)\)的.. 想上高斯消元,却又处理不了逆元这个 ...
- BZOJ1176 [Balkan2007]Mokia 【CDQ分治】
题目 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. 输入格式 ...
- gerrit工具-workflow
gerrit-workflow
- Angular(三)
一.使用Module(模块)组织依赖关系 模块提供了一种方法,可以用来组织应用中一块功能区域的依赖关系:同时还提供了一种机制,可以自动解析依赖关系(又叫做依赖注入).一般来说,我们把这些叫做依赖服务, ...
- (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
« CloudStack+XenServer详细部署方案(10):高级网络功能应用 (总结)CentOS Linux 5.x在GPT分区不能引导的解决方法 » 2013-1 11 (原创)Linux下 ...
- Quartus2 通过Nativelink调用modelsim进行功能仿真(转载)
quartus2建立工程后,编译并检查语法通过后(功能仿真都不需要综合) tips:这样你的工程层次化也同时完成了. 打开Assignment -> settings, 找到Simulation ...
- 【ZOJ4063】Tournament(构造)
题意:n个人要打m轮比赛 每一轮每个人都要有一个对手.而且每个对手只能打一次.假设a与b打了,c与d打了, 那么后面的任意一轮如果a与c打了,那么b就必须和d打 问是否存在方案,输出字典序最小的一组, ...