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;
}