vector之妙用系列
vector用法:
总结了下大家写的,感觉用着很方便;
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
为了可以使用vector,必须在你的头文件中包含下面的代码:
|
#include <vector> |
vector属于std命名域的,因此需要通过命名限定,如下完成你的代码:
|
using std::vector; vector<int> vInts; |
或者连在一起,使用全名:
|
std::vector<int> vInts; |
建议使用全局的命名域方式:
|
using namespace std; |
在后面的操作中全局的命名域方式会造成一些问题。vector容器提供了很多接口,在下面的表中列出vector的成员函数和操作。
Vector成员函数
|
函数 |
表述 |
|
c.assign(beg,end) c.assign(n,elem) |
将[beg; end)区间中的数据赋值给c。 将n个elem的拷贝赋值给c。 |
|
c.at(idx) |
传回索引idx所指的数据,如果idx越界,抛出out_of_range。 |
|
c.back() |
传回最后一个数据,不检查这个数据是否存在。 |
|
c.begin() |
传回迭代器重的可一个数据。 |
|
c.capacity() |
返回容器中数据个数。 |
|
c.clear() |
移除容器中所有数据。 |
|
c.empty() |
判断容器是否为空。 |
|
c.end() |
指向迭代器中的最后一个数据地址。 |
|
c.erase(pos) c.erase(beg,end) |
删除pos位置的数据,传回下一个数据的位置。 删除[beg,end)区间的数据,传回下一个数据的位置。 |
|
c.front() |
传回第一个数据。 |
|
get_allocator |
使用构造函数返回一个拷贝。 |
|
c.insert(pos,elem) c.insert(pos,n,elem) c.insert(pos,beg,end) |
在pos位置插入一个elem拷贝,传回新数据位置。 在pos位置插入n个elem数据。无返回值。 在pos位置插入在[beg,end)区间的数据。无返回值。 |
|
c.max_size() |
返回容器中最大数据的数量。 |
|
c.pop_back() |
删除最后一个数据。 |
|
c.push_back(elem) |
在尾部加入一个数据。 |
|
c.rbegin() |
传回一个逆向队列的第一个数据。 |
|
c.rend() |
传回一个逆向队列的最后一个数据的下一个位置。 |
|
c.resize(num) |
重新指定队列的长度。 |
|
c.reserve() |
保留适当的容量。 |
|
c.size() |
返回容器中实际数据的个数。 |
|
c1.swap(c2) swap(c1,c2) |
将c1和c2元素互换。 同上操作。 |
|
vector<Elem> c vector <Elem> c1(c2) vector <Elem> c(n) vector <Elem> c(n, elem) vector <Elem> c(beg,end) c.~ vector <Elem>() |
创建一个空的vector。 复制一个vector。 创建一个vector,含有n个数据,数据均已缺省构造产生。 创建一个含有n个elem拷贝的vector。 创建一个以[beg;end)区间的vector。 销毁所有数据,释放内存。 |
以下用代码的方式实现:
#include<stdio.h>
#include<vector>
#include<algorithm>
int main(){
std::vector<int>vec;
std::vector<int>::iterator iter;
for(int i=;i<;i++)vec.push_back(i);
for(int i=;i<;i++)vec.push_back(i);
for(int i=;i<;i++)printf("%d ",vec[i]);//当超过容器的size时答案为0;
puts("");printf("当前容器大小为:%d\n",vec.size());
printf("删除第三个元素:%d\n",vec[]);vec.erase(vec.begin()+);
for(iter=vec.begin();iter!=vec.end();iter++)printf("%d ",*iter);
puts("");
reverse(vec.begin(),vec.end());//反转当前容器中的元素;
for(int i=;i<vec.size();i++)printf("%d ",vec[i]); puts("");
sort(vec.begin(),vec.end());//排序;
iter=vec.begin();
while(iter++!=vec.end())printf("%d ",*iter);
return ;
}
vector之妙用系列的更多相关文章
- codeforces 85D D. Sum of Medians Vector的妙用
D. Sum of Medians Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/prob ...
- Gengxin讲STL系列——Set
本系列第二篇blog 第一篇写的心潮澎湃,结果写完一看,这都是些什么玩意= =| Set的中文名称是“集合”.集合,高一数学必修一课本给出的定义已经很明确了,简单来讲就是一个不含重复元素的空间(个人定 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|系列文章]
简单易懂的rustlang入门教程. [易学易懂系列|rustlang语言|零基础|快速入门|(1)|开篇] [易学易懂系列|rustlang语言|零基础|快速入门|(2)|VCCode配置] [易学 ...
- C++中关于文本内容的实用操作集合(新)(添加一些关于文件流的介绍)
首先先给大家一个链接:http://baike.baidu.com/view/1679747.htm 主要是关于ios的使用,头文件要include<ios>,然后就可以调用下面的一些操作 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量
<zw版·Halcon-delphi系列原创教程> Halcon分类函数015,vector矢量 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...
- Java 集合系列 05 Vector详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我就不找它具体的定义了,直接举个例子,栈就相当于一个很窄的木桶 ...
- JDK1.8源码阅读系列之三:Vector
本篇随笔主要描述的是我阅读 Vector 源码期间的对于 Vector 的一些实现上的个人理解,用于个人备忘,有不对的地方,请指出- 先来看一下 Vector 的继承图: 可以看出,Vector 的直 ...
随机推荐
- PHP连接sql server 2005环境配置
一.Windows下PHP连接SQLServer 2005 设定:安装的Windows操作系统(Win7 或XP均可.其它系统暂未測试),在C盘下:PHP的相关文件位于c:/PHP以下,其配置文件ph ...
- 文件系统 busybox and initramfs
1.busybox制作根文件系统 http://wenku.baidu.com/link?url=h2m_xrj6OsLiHVVhMY2e0C7WKikw_H3dZY_b4mUiW1E7AEf_q34 ...
- [转]Laravel 4之数据库操作
Laravel 4之数据库操作 http://dingjiannan.com/2013/laravel-database/ 数据库配置 Laravel数据库配置在app/config/database ...
- [Hapi.js] Replying to Requests
hapi's reply interface is one of it's most powerful features. It's smart enough to detect and serial ...
- My way to Python - Day03
列表和字典的赋值 dict1 = {} dict1['k1'] = 'v1' list1 = [] list1.append('v1') 集合系列 1,计数器 Python 2.7.6 (defaul ...
- ASP.NET 后台下载文件方法
void DownLoadFile(string fileName) { string filePath = Server.MapPath(fileName);//路径 //以字符流的形式下载文件 F ...
- border-radius讲解2
一:border-radius只有一个取值时,四个角具有相同的圆角设置,其效果是一致的: .demo { border-radius: 10px; } 其等价于: .demo{ border-top- ...
- html中opacity的使用
今天做项目要用到一个层背景透明,层上的内容不透明的效果 结果网上找了半天,没一个靠谱的, 最后倒是被一句话点醒了:纸烧了,纸上面的字也会没了 所以,要设2层遮罩层,看代码: .dialog_1//内容 ...
- Office 2010
1.Office Professional Plus 2010: 6QFDX-PYH2G-PPYFD-C7RJM-BBKQ8 BDD3G-XM7FB-BD2HM-YK63V-VQFDK 2.Offic ...
- YUI Array 之each| forEach(遍历)
1. yui-each原码: 遍历YArray.each = YArray.forEach = Lang._isNative(Native.forEach) ? function (array, fn ...