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和博客园同时发布

posted on 2020-08-08 22:14  ffthh  阅读(170)  评论(0)    收藏  举报