vector 的新手入门指南
来自一个oi新手的知识收集,主要是想记录一下还是一个菜鸡时的学习吧,等到变强了以后看可能会很有意思。
一.vector 的基础用法
简单来说就是在你不知道要开多大空间,并不卡常数(时间)的情况下,可以采用c++ stl库 里给的动态数组。
头文件:<vecter>
1.push_back() 在序列末尾插入一个元素
2.pop_back() 从序列后弹出一个元素(虽然并没有什么卵用)
3. size() 获取vector 的长度
4. insert() 可以在vector 的任意地方插入元素:insert(位置, 数值)
5. clear() 清空vector,但并不清空内存
清空内存可以vector<int>().swap( )
举个例子哈:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector<int> vct;
int main(){
for(int i = 1;i <= 10;i ++){
vct.push_back(i);
}
cout<< vct.size() << endl;
vct.insert(vct.begin() + 2, 300);
for(int i = 0;i < vct.size();i ++){
cout << vct[i] << ' ';
}
vct.clear();
return 0;
}
运行结果是:
10
1 2 300 3 4 5 6 7 8 9 10
二、vector 可以配合结构体使用
像这个样子:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
struct plan{
string name;
int score;
};
vector<plan> vct;
plan stua, stub;
int main(){
cin >> stua.name >> stua.score;
cin >> stub.name >> stub.score;
vct.push_back(stua);
vct.push_back(stub);
for(int i = 0;i < vct.size();i ++){
cout << vct[i].name <<' ' << vct[i].score << endl;
}
return 0;
}
这个满容易看懂的吧……
三、二维动态数组
vector 的二维形式:vector<vector<int> > vct;
- 注意:
int > >要有空格!不然可能过不了某些编译器
vector 构造函数
vector<int> vct(动态数组的长度n, 初始时每个数的值);
将两者合二为一时:
vector<vector<int> > vct(动态数组的长度n, vector<int>(动态数组的长度m, 初始值);
上代码:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int a = 0, b = 1, c = 2, n;
vector<vector<int> > vct;
int main(){
cin >> n;
for(int i = 0;i < n;i ++){
vector<int> cnt;
cnt.push_back(a);
cnt.push_back(b);
cnt.push_back(c);
a ++, b ++, c ++;
vct.push_back(cnt);
}
for(int i = 0;i < n;i ++){
for(int j = 0;j < vct[i].size();j ++){
cout << vct[i][j] << ' ';
}
cout << endl;
}
return 0;
}
- 最后的提醒:别访问非法内存!!!
注:本博文在csdn和博客园同时发布

浙公网安备 33010602011771号