1. array
数组定义的时候需要同时定义数据长度int arr[n];
type arrayName [ arraySize ];
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
数组的长度不可以调节;向量vector是可以自动调节大小
2.vector
vector<int>values{1,2,3,4,5}
向量里可以放入任意数据类型:vector<int> vec;
也可以放进向量:vector<vector<int>> nvec;
创建一个vector,元素个数为nSize,且值均为t:vector(int nSize,const t& t)
复制构造函数:vector(const vector&)
复制[begin,end)区间内另一个数组的元素到vector中:vector(begin,end)
vector
需要在另一个函数里引用,需要在函数变量里使用&
例如: void define_arr(vector<int> &arr,int num);
迭代器(STL迭代器) [这个会在STL里再讲]
vector<int>::iterator it;
用迭代器遍历容器1
2
3
4for (i = v.begin(); i != v.end(); ++i) { //用迭代器遍历容器
cout << *i << " "; //*i 就是迭代器i指向的元素
*i *= 2; //每个元素变为原来的2倍
}
反向迭代器1
2for (vector<int>::reverse_iterator j = v.rbegin(); j != v.rend(); ++j)
cout << *j << " ";
基本函数
1 | #include < vector> |
增加函数:
1.push_back 在数组的最后添加一个数据(vector里没有push_front)
iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
删除函数
2.pop_back 去掉数组的最后一个数据(vector里没有pop_front)
iterator erase(iterator it):删除向量中迭代器指向元素
iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
void clear():清空向量中所有元素
遍历函数
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针(如果找不到,就会返回end())
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)反向迭代器,指向最后一个元素
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)反向迭代器,指向第一个元素之前的位置
判断函数
17.empty 判断vector是否为空
大小函数
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
其他函数
18.swap 与另一个vector交换数据;void swap(vector&):交换两个同类型向量的数据
void assign(int n,const T& x):设置向量中前n个元素的值为x
void assign(const_iterator first,const_iterator last):向量中[first,last)中元素设置成当前向量元素
sort(obj.begin(),obj.end());//从小到大
sort 需要头文件 #include