C++线性序列容器<vector>简单总结
C++线性序列容器<vector>简单总结
vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加;Vector类提供额外的方法来增加、删除元素,比数组操作高效。
头文件:#include <vector>
命名空间:using namespace std:vector
构造函数
vector<int>vec_int; // 创建一个整形元素的vector
vector<string>vec_string; // 创建一个string元素的vector
vector<Mystruct>vec_Mystruct; // 创建一个元素是结构的vector
基本维护操作
1.访问
下标访问和at()两种方式,推荐第二种方法,它会进行边界检查。
vec_int[1], vec_int.at(1); // 访问索引为1的元素,第2个元素
int size() const; // 返回向量中的元素个数
bool empty() const; // 判断向量是否为空,true为空,false为不空
reference back( ); // 返回向量的最后一个元素的引用,可以被修改
reference front( ); // 返回向量的第一个元素的引用,可以被修改
2.添加
void push_back(const T& Val); ; // 在vector末尾处添加一个元素。
3.删除
void pop_back( ); // 删除向量末尾处的元素。
void clear(); // 清除向量中的所有元素
4.插入
void insert(iterator it, int count, T& value); // 在迭代器的位置插入指定count数量的value值,count参数可选,默认为1
5.遍历
常用的使用迭代器遍历,也非常方便;
iterator begin(); // 返回向量的第一个元素的迭代器
iterator end( ); // 返回向量的最后一个元素的迭代器
遍历方法:
for (vector<int>::iterator vec_it = vec_int.begin(); vec_it != vec_int.end(); vec_it++)
{
cout << *vec_it << endl;
}
成员函数
|
assign
|
清除矢量并将指定的元素复制到该空矢量。 |
| at | 返回对矢量中指定位置的元素的引用。 |
| back | 返回对向量中最后一个元素的引用。 |
| begin | 对该向量中第一个元素返回随机访问迭代器。 |
| capacity | 返回在不分配更多的存储的情况下向量可以包含的元素数。 |
| cbegin | 返回指向向量中第一个元素的随机访问常量迭代器。 |
| cend | 返回一个随机访问常量迭代器,它指向刚超过矢量末尾的位置。 |
| crbegin | 返回一个指向反向矢量中第一个元素的常量迭代器。 |
| crend | 返回一个指向反向矢量末尾的常量迭代器。 |
| clear | 清除向量的元素。 |
| data | 返回指向向量中第一个元素的指针。 |
| emplace | 将就地构造的元素插入到指定位置的向量中。 |
| emplace_back | 将一个就地构造的元素添加到向量末尾。 |
| empty | 测试矢量容器是否为空。 |
| end | 返回指向矢量末尾的随机访问迭代器。 |
| erase | 从指定位置删除向量中的一个元素或一系列元素。 |
| front | 返回对向量中第一个元素的引用。 |
| get_allocator | 将对象返回到矢量使用的 allocator 类。 |
| insert | 将一个元素或多个元素插入到指定位置的向量中。 |
| max_size | 返回向量的最大长度。 |
| pop_back | 删除矢量末尾处的元素。 |
| push_back | 在矢量末尾处添加一个元素。 |
| rbegin | 返回指向反向向量中第一个元素的迭代器。 |
| rend | 返回一个指向反向矢量末尾的迭代器。 |
| reserve | 保留向量对象的最小存储长度。 |
| resize | 为矢量指定新的大小。 |
| shrink_to_fit | 放弃额外容量。 |
| size | 返回vector元素个数 |
| swap | 交换两个向量的元素。 |
C++线性序列容器<vector>简单总结的更多相关文章
- STL之序列容器vector
首先来看看vector的模板声明: template <class T, class Alloc = allocator<T>> class vector { //… }; v ...
- STL - 容器 - vector简单应用
VectorTest.cpp #include <vector> #include <iostream> #include <string> #include &l ...
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
序列性容器::(vector和list和deque) erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被 删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方 式, ...
- 02--STL序列容器(Vector)
一:vector容器简介 图片和顺序栈相似,但是vector数组是动态数组,支持随机存取--->但是在尾部添加或者溢出元素非常快速,中间插入删除费时 vector是将元素置于一个动态数组中加以管 ...
- STL常用序列容器
这里简要的记述一下STL常用容器的实现原理,要点等内容. vector vector是比较常用的stl容器,用法与数组是非类似,其内部实现是连续空间分配,与数组的不同之处在于可弹性增加空间,而arra ...
- C++关联容器<map>简单总结
C++关联容器<map>简单总结 map提供大小可变的关联容器,基于关联键值高效检索元素值.当你处理键值对的数据是,都可以考虑使用map关联容器. 特点: 大小可变的关联容器,基于关联键值 ...
- 基于FPGA的UART协议实现(通过线性序列机)
//////////////////2018/10/15 更新源代码: 实现uart这东西其实早就写了,不过不太完善,对于一个完美主义者来说,必须解决掉它. 1.什么是UART? 通用异 ...
- string基本字符序列容器(竞赛时常用的使用方法总结)
C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换.查找 ...
- SSIS之序列容器
序列容器是一种十分简单,但使用非常广泛的容器,它可以对控制流的任务流组件进行结构化处理,把一些业务相关的任务组件,放到一个序列容器中,使整个包看起来更加整洁.美观,就如同我们家里的书柜.衣柜似的,把不 ...
随机推荐
- html5插入视频
- 文件操作-php
<?php /* 建立缓存 可以用文件长时间保存数据 文件是以liunux为模型的 在Windows下只能获取file ,dir unknow linux 下可以获取block char dir ...
- python使用PIL压缩图片
import Image import os import os.path import sys path = sys.argv[1] small_path = (path[:-1] if path[ ...
- iOS8之后CoreLocation定位的使用
在Info.plist文件中添加如下配置: //始终允许访问位置信息 (1)NSLocationAlwaysUsageDescription //使用应用程序期间允许访问位置数据 (2)NSLocat ...
- Tomat部署Web运用
在Tomcat部署Web运用的方式主要有如下几种 >利用Tomcat的自动部署 >利用控制台部署 >增加自定义的Web部署文件 >修改server.xml问价部署Web运 ...
- Notepad++去除代码行号的几种方法
Notepad++去除代码行号的几种方法 (转自:http://hi.baidu.com/beer_zh/item/e70119309ee587f2a8842892)问:在网页中复制代码时,常常遇到高 ...
- C#编译时出现“不安全代码只会在使用 /unsafe 编译的情况下出现”错误的解决
原因是:在编译的代码里面有不安全类型unsafe方法或类!解决方法:将项目属性页中生成下的“允许不安全代码”复选框打上对勾即可,方法如下:项目属性对话框->生成->允许不安全代码块 选中即 ...
- HDOJ(HDU) 1799 循环多少次?(另类杨辉三角)
Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次 ...
- POJ 2718 穷举
题意:给定一组数字,如0, 1, 2, 4, 6, 7,用这些数字组成两个数,并使这两个数之差最小.求这个最小差.在这个例子上,就是204和176,差为28. 分析:首先可以想到,这两个数必定是用各一 ...
- C++ 匿名名字空间及静态非成员函数
在C++中,static有一个感觉被较少提及的用法:修饰非成员函数,这个用法实际是从C语言继承来的.其作用是表明这个函数只在当前编译单元中有效.这就使这个函数的所有引用在编译时就可以全部确定,无需进入 ...