# c++ 学习之路 (vector用法)

c++ 学习之路 (vector用法)

定义

vector 是一个可变大小数组的序列容器。它可以像数组一样储存数据,但是又比数组灵活,可以动态改变。
vector的初始化和赋值如下所示:

#include <iostream>
#include <vector>
using namespace std;
int main() {
	// 声明一个int 型向量
	vector<int> a;
	// 声明一个可以容纳n个元素的向量
	vector<int> a(n);
	// 声明一个初始大小是5的,值都为2的向量
	vector<int> a(5,2);
	// 声明一个a初始化的b向量,b和a相同
	vector<int> b(a);
	// 将数组的值用于向量的初始值
	int a[5] = {1,2,3,4,5};
	vector<int> b(a,a+5);
	// 将a[1] - a[4] 范围内的元素作为向量的初始值
	vector<int> b(&a[0], &a[4]);
}

对于vector<vector > 来说,意思就是在容器中嵌套一个容器。类似于:

#include <iostream>
#include <vector>
using namespace std;

int main() {
	// your code goes here
	vector<int> a(10,1);
	vector<vector<int> > b(10,a);
	for(int i = 0; i < 10; i++) {
		for(int j =0; j < 10; j++) {
			cout << b[i][j] << "\t";
		}
		cout << "\n";
	}
	return 0;
}

最后,输出的结果是10行10列的 1; 其结果类似于以前所说的二维向量

int a[10][10] = {{1,1,1,1...1},{1,1,1...1}, ...... {1,1,1,1....1}).

vector 基本操作

容量

向量大小 a.size();
向量最大容量 a.max_size();
更改向量大小 a.resize();
向量真实大小 a.capacity();
向量判空 a.empty();

修改

多个元素赋值 a.assign();
末尾添加元素 a.push_back();
末尾删除元素 a.pop_back();
任意位置插入元素 a.insert();
任意元素删除元素 a.erase();
交换两个向量的元素 a.swap();
清空向量元素 a.clear();

元素访问

下标访问: a[1];
at 访问: a.at(1); // 若超界限,则会显示 “out of range"
访问第一个元素 a.front();
访问最后一个元素 a.end();

遍历元素

#include <iostream>
#include <vector>
using namespace std;

int main() {
	// your code goes here
	vector<int> a(10,1);
	vector<vector<int> > b(10,a);
	for (int i = 0; i < b.size(); i++) {
		for (int j = 0; j < b[1].size(); j++) {
			cout << b[i][j] << "\t";
		}
		cout << "\n" << endl;
	}

	return 0;
}

元素翻转

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	// your code goes here
	int c[5] = {1,2,3,4,5};
	vector<int> a(c,c+5);
	reverse(a.begin(),a.end());
	for(int i = 0; i<a.size();i++) {
		cout << a[i] << "\t";
	}
	return 0;
}

元素排列

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	// your code goes here
	int c[5] = {2,6,5,7,3};
	vector<int> a(c,c+5);
	sort(a.begin(),a.end());
	for(int i = 0; i<a.size();i++) {
		cout << a[i] << "\t";
	}
	return 0;
}
发布了6 篇原创文章 · 获赞 0 · 访问量 66

猜你喜欢

转载自blog.csdn.net/weixin_44935881/article/details/105472422