C++ Vector 动态数组

Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度

Constructors 构造函数
Operators 对vector进行赋值或比较
assign() 对Vector中的元素赋值
at() 返回指定位置的元素
back() 返回最末一个元素
begin() 返回第一个元素的迭代器
capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)
erase() 删除指定元素
front() 返回第一个元素
get_allocator() 返回vector的内存分配器
insert() 插入元素到Vector中
max_size() 返回Vector所能容纳元素的最大数量(上限)
pop_back() 移除最后一个元素
push_back() 在Vector最后添加一个元素
rbegin() 返回Vector尾部的逆迭代器
rend() 返回Vector起始的逆迭代器
reserve() 设置Vector最小的元素容纳数量
resize() 改变Vector元素数量的大小
size() 返回Vector元素数量的大小
swap() 交换两个Vector

在 C++ STL 许多 容器类的东西 都不需声明大小  只需定义即可

时间: 2024-08-08 05:37:46

C++ Vector 动态数组的相关文章

八连通(vector动态数组法)

题目和一般的八连通一样,但行数和列数未定,相乘对于1e6,直接开a[1e6][1e6]的数组肯定会爆内存.用二维的动态vector就能很好的解决这个问题 #include<bits/stdc++.h> using namespace std; int dx[10]={-1,0,1,-1,1,-1,0,1}; int dy[10]={1,1,1,0,0,-1,-1,-1}; int n,m; void dfs(vector< vector < bool > >&a

cpp中vector动态数组(一种container)的简单用法

vector<int> num; for (int i=0; i<10; ++i)num.push_back(i); num.push_back(10); num.push_back(10); cout << "Original array:\n"; //vector<int>::iterator it; //C++11之前用的,11之后可以用auto for (auto it=num.begin(); it!=num.end(); ++it)

vector动态二维数组(容器的容器)占用内存分析

之前在这里写过一篇"C++中的动态二维数组".在C++中没有动态二维(多维)数组.但是根据原理我们可以自己创建. 在看过STL的vector源代码后"<STL源码剖析>---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组. 创建一个2x4的二维数组.想到的办法是:先创建一个容器的容器,外层大小的2(2行),然后里面容器小大为4(4列). int row=2,col=4; vector<vector<int> &g

c++动态数组vector

(这篇随笔主要和大家分享一下在信竞中c++中动态数组vector的用法,那些跟竞赛没毛关系的就不说了..) 相信大家都知道c++里有一个nb的STL模板库..(在这里膜一下STL) 今天我们就要扯一扯这里面的一个容器:动态数组vector. vector实际上类似于a[]这个东西,也就是说它重载了[]运算符.(真是66666666) 使用vector时需要加上<vector>这个头文件. 定义方法:vector <类型名> 变量名; 例: vector <int> a;

动态数组vector

动态数组 动态数组可以实现长度的自由变化,但是通过vector的默认值可以基本判断所谓动态数组实际上还是一个普通数组,传递一个参数确定数组长度,如果没有传递参数,程序中其实默认进行设定.如果插入数据之后超过了已有长度,则在内部进行了一个创建第三方的过程,将现在的数组保存起来,然后再次创建一个新的长度的数组,然后根据插入值进行重新整合. 笔者并未看过源码,只是按照功能试着进行实现. 1.array.h 1 #pragma once 2 3 #include <iostream> 4 using

转:用STL中的vector动态开辟二维数组

用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int main(){ int m, //行数     n; //列数 cout << "input value for m,n:"; cin>>m>>n;  //注意下面这一行:vector<int后两个">"之间要有空格!否则会被认

动态数组 - vector

1 #include <iostream> 2 #include <vector> // 头文件 3 using namespace std; 4 5 int main() 6 { 7 vector<int> v; // 定义一个动态数组 vector<T> v; 8 9 // 几种初始化方式: 10 vector<int> v1(7); // v1中会含有7个元素size() == 7, 都赋值为0 11 vector<int> v

动态数组索引越界问题

1.在C++中,可以采用几种不同的方法创建一个某种类型T的对象的数组.3种常用的方法如下: #define N 10 //数组的长度N在编译时已知 T static_array[10]; int n = 20; //数组的长度n是在运行时计算的 T* dynamic_array = new T[n]; std::vector<T> vector_array; //数组的长度可以在运行时进行修改 当然,我们仍然可以使用calloc()和malloc()函数,并且这样的程序仍然能够通过编译并顺利运

vector代替数组

vector代替数组 1.声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除). 2.用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a.同理想用向量代替三维数组也是一样,vector <int**>a;再往上面依此类推. 下面是另外一种vector代替二维数组的方