「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」
前言
前面介绍了数组基本功能,例如初始化,查改,计算长度,还有好多关于数组的知识,今天来看下
vector数组
vector英文意思是矢量,向量,载体的意思
vector是一个能存放任意数据类型的动态数组,这个概念和Golang中的数组与切片的关系差不多,C++中的数组的大小是固定的,动态数组是可以改变的,vector能够动态扩缩容,其他的和普通的数组差不多,通过下表索引来访问其中的元素
vector定义方式
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<string> a(3, "a"); //3个a的动态数组
vector<int> b{ 1,3,5,7,9};
for (auto i : a) { //C++ 11新特性 表示i变量是自动匹配的数据类型
cout << i << endl;
}
for (auto i : b) {
cout << i << endl;
}
}
增加元素
增加元素主要分为两种,从尾部和头部插入,分别是push_back和insert方法,push_back为尾部插入,insert为头部插入,来看看代码:
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> c{ 1,3,5,7,9 };
c.push_back(1);
std::vector<int> d(c); //c复制给d
vector <int>::iterator it = d.begin();
d.insert(it, 5, 10);
d.insert(it,999);
for (auto i : c) {
cout << i << endl;
}
cout << '\n' << endl;
for (auto i : d) {
cout << i << endl;
}
}
可以看到分别在vector前后插入了一些元素,在使用insert的时候需要进行生成迭代对象,在迭代对象中插入,insert方法可以接收三个或两个参数,三个参数如上所示,第一个为迭代对象,第二个为插入元素的个数,第三个为插入的元素,接受两个参数的时候就会忽略插入元素的个数
删除元素
删除元素,主要有三个方法:
- pop_back() 删除最后一个元素
- erase() 删除指定位置元素
- clear() 清除所有的元素 现在来一一测试一遍:
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> array{ 1,3,5,7,9 };
array.pop_back();
for (auto i : array) {
cout << i << endl;
}
std::vector<int> f(array);
vector <int>::iterator it = f.begin();
f.erase(it+1); //开始位置加一
cout << '\n' << endl;
for (auto i : f) {
cout << i << endl;
}
f.clear();
for (auto i : f) {
cout << i << endl;
}
}
判断vector是否为空
使用empty()方法:
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> array1{ 1,3,5,7,9 };
vector<int> array2{};
cout << empty(array1) << endl;
cout << empty(array2) << endl;
}
结果是0为空,1为非空
总结
C++中的vector动态数组基本使用已经过了一遍。还认识了一个auto的数据类型。下面想使用学习的内容来实现一个简单的算法,来比较语言差距