//使用vector动态数组需要引入头文件<vector>,如何构建一个动态数组呢?
//vector<int>arr 即构建了一个int型的名为arr的动态数组,初始时数组为空
//动态数组的结构不只是int,char,string,也可以自定义结构体。
// 假如要构造N个1的动态数组,即可vector<int>vec(N,1),比循环更省空间。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main() {
vector<int>arr;
arr.push_back(1);
arr.push_back(2);
arr.push_back(4);
arr.push_back(3);
arr.push_back(2);
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << endl;
}
arr.pop_back();//顶部删除
cout << "arr的长度:" << arr.size() << endl;
//arr.clear()只是清空数组里的元素,而不清空数组所占用的内存。
//有一种方式可以清空内存,就是交换。新建一个动态数组,将要清除的数组与其交换。
//vetctor<int>b;
//vector<int>().swap(b);
arr.clear();
cout << "arr的长度:" << arr.size()<<endl;
vector<int>b;
b.push_back(1);
b.push_back(2);
b.push_back(3);
b.push_back(2);
auto it = find(b.begin(), b.end(), 2)-b.begin();//auto it=find(b.begin(),b.end(),x);it是指针,该用法是查找第一个x出现时的下标。
cout << "第一个2的下标是:" << it<<endl;
//二维数组
vector<vector<int> >vec2;
int k = 3;
for (int i = 0; i < k; i++) {
vector<int>TD(1 + i, 2);//行
vec2.push_back(TD);//放到列里面
}
//TD[0]={2};vec2[0]=TD[0]={2};
//TD[2]={2,2};vec2[1]=TD[1]={2,2};
//TD[3]={2,2,2};vec2[2]=TD[2]={2,2,2};
//实际上就是
//2
//2 2
//2 2 2
//[0][0]
//[1][0] [1][1]
//[2][0] [2][1] [2][2]
for (int i = 0; i < k; i++) {
for (int j = 0; j < vec2[i].size(); j++) {
cout << vec2[i][j] << " ";
}
cout << endl;
}
return 0;
}