STL之vector 动态数组
导读:STL之vector,IT袋网网小编为你介绍STL之vector的介绍,请看下面详细的介绍。 vector是 C++ 标准库中的一个动态数组容器,它可以存储一组相同类型的元素【自己指定元素的类型】 1.头文
STL之vector
IT袋网网小编为你介绍STL之vector的介绍,请看下面详细的介绍。
vector是 C++ 标准库中的一个动态数组容器,它可以存储一组相同类型的元素【自己指定元素的类型】
1.头文件:
#include <vector>
2.声明和初始化:
//声明创建vector数组
vector<int> myVector = {1,2,3,4,5}; //声明一个整数类型的 vector
vector<double> myDoubleVector(5);//声明一个包含 5 个双精度浮点数的 vector
// ,默认初始值为0
vector<string> myStringVector = { "apple", "banana", "cherry" };
3.添加元素:
可以使用 push_back() 函数将元素添加到 vector 的末尾:
myVector.push_back(42);
myStringVector.push_back("date");
4.删除元素:
使用 pop_back() 函数删除 vector 中的最后一个元素:
myVector.pop_back();
myStringVector.pop_back();
myDoubleVector.pop_back();
使用 insert() 和 erase() 函数可以在指定位置插入和删除元素:
myVector.insert(myVector.begin()+2, 102);//相当于0为初始位置的数组,索引2的位置被插入
myStringVector.erase(myStringVector.begin() + 2);//同上
5.修改元素:
//3.修改元素的值
myVector[0] = 101;
6.访问元素:可以像数组一样去索引,或者用xx.at(index)
可以使用下标操作符 [] 或 at() 函数来访问 vector 中的元素:
int firstElement = myVector[0];
string secondElement = myStringVector.at(1);
cout << myVector[3] << " " << myStringVector.at(2) << endl;
7.清空 vector:
使用 clear() 函数可以清空 vector 中的所有元素:
myVector.clear();
8.综合示例:
#include <iostream>
#include <vector>
using namespace std;
void myswap(vector<int>& nums, int i, int j);
void sortColors(vector<int>& nums) {
int low = 0;
int high = nums.size() - 1;
int i = 0;
while (i <= high) {
if (nums[i] == 0) {
myswap(nums, i, low);
low++;
i++;
}else if (nums[i] == 2) {
myswap(nums, i, high);
high--;
}
else
{
i++;
}
}
}
void myswap(vector<int>& nums, int i, int j) {
int temp;
temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
void printArray(const vector<int>& nums) {
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] <<" ";
}
std::cout << std::endl;
}
int main() {
vector<int> arr = { 0,1,1,1,2,2,2,0,0,0,0,1,1,1};
sortColors(arr);
printArray(arr);
return 0;
}
Tip:定义一个模板函数的步骤
举个栗子:定义一个模板函数,可以遍历vector数组,这个数组可以是string,int或者是doubble类型的。====》目的是一个函数通用,不用管数组元素类型
相关阅读
-
js切割数组的方法 关于js对象数组根据元素排序
小编为你解答js切割数组的方法和关于js对象数组根据元素排序IT技巧方面的经验,相关内容具体如下: 数组是JavaScript编程中最常用的结构之一,这也是为什么了解它的内置方法很重要。 在本
-
网络代理服务器是什么意思 搭建服务器上外网的方法
您可能不了解网络代理服务器是什么意思和搭建服务器上外网的方法的IT知识,接下来一起来看看吧。 方法一:关掉代理局域网 1.打开windows设置→网络和Internet→代理→勾选自动检测设置,关
-
智能网站建设报价方案 网站建设费用明细表
本文为你详解智能网站建设报价方案和网站建设费用明细表的IT小经验,请看下面详细的介绍。 每天了解一点点,每次进步一点点。 随着互联网的崛起和飞速发展,很多企业都有自己的网站,
-
GNOME 正在 某种程度上恢复在几年前删除的功能
今天介绍GNOME的内容,继续往下看吧! GNOME 的设计做了一些有意义的变化,它(某种程度上)带回了一个它早先删除的类似功能。 几年前,GNOME 移除了应用程序的菜单和指示器。 如果你不太清


