美文网首页
STL学习笔记(一)

STL学习笔记(一)

作者: 风之旅人c | 来源:发表于2018-07-23 09:15 被阅读0次

不定长数组:vector

定义

vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。

vector的声明

头文件
#include <vector>
using namespace std;
声明

vector <数据类型> 数组名

vector <int> v1;      //构造一个空的Vector
vector <int> v1(5);  //构造一个大小为5的Vector
vector <int> v1(5, 42);    //构造了一个包含5个值为42的元素的Vector
vector <int> v2(v1);  //用v1初始化v2
vector <int> v2(v1.begin(), v1.begin()+3);     //用v1的第0个到第2个数据初始化v1
//也可以用数组来初始化
int v3[] = {1, 2, 3, 4, 5};
vector <int> v2(v3, v3+5);
vector <int> v2(v3[1], v3[4]);

vector的操作

vector的输入输出

1.可以直接像数组一样利用[]来输入输出。
2.可以使用at()函数来操作,类似与[],但更加安全。
3.使用迭代器来操作。

    vector<int>::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;
vector的其他操作
1.at() 返回指定位置的元素
2.back() 返回最末一个元素
3.begin() 返回第一个元素的迭代器
4.capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)
5.clear() 清空所有元素
6.empty() 判断Vector是否为空(返回true时为空)
7.end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)
8.erase() 删除指定元素
语法:
iterator erase( iterator loc );//删除loc处的元素
iterator erase( iterator start, iterator end );//删除start和end之间的元素
9.front() 返回第一个元素的引用
10.get_allocator() 返回vector的内存分配器
11.insert() 插入元素到Vector中
语法:
iterator insert( iterator loc, const TYPE &val );
//在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 
void insert( iterator loc, size_type num, const TYPE &val );
//在指定位置loc前插入num个值为val的元素
void insert( iterator loc, input_iterator start, input_iterator end );
//在指定位置loc前插入区间[start, end)的所有元素
12.max_size() 返回Vector所能容纳元素的最大数量(上限)
13.pop_back() 移除最后一个元素
14.push_back() 在Vector最后添加一个元素
15.rbegin() 返回Vector尾部的逆迭代器
16.rend() 返回Vector起始的逆迭代器
17.reserve() 设置Vector最小的元素容纳数量
//为当前vector预留至少共容纳size个元素的空间
18.resize()  改变Vector元素数量的大小
语法:
void resize( size_type size, TYPE val );
//改变当前vector的大小为size,且对新创建的元素赋值val
19.size() 返回Vector元素数量的大小
20.swap() 交换两个Vector
语法:
void swap( vector &from );

二维向量

与数组相同, 向量也可以增加维数, 例如声明一个m*n大小的二维向量方式可以像如下形式:

 vector< vector<int> > b(10, vector<int>(5)); 
//创建一个10*5大小的二维vector

操作类似于二维数组。

相关文章

网友评论

      本文标题:STL学习笔记(一)

      本文链接:https://www.haomeiwen.com/subject/lbrdmftx.html