C++学习:vector

1.vector的定义和特性

在C++中,vector是一个动态数组容器,可以存储一系列相同类型的元素它是标准库中定义的模板类。

vector的定义和结构非常简单,它由以下几个重要的部分组成:
模板类声明:vector是一个模板类,因此在使用之前需要包含头文件。
声明一个vector对象的通用语法如下:std::vector<T> vec;
这里的T是要存储在vector中的元素类型。

容器大小:
vector是一个动态数组,可以根据需要自动调整大小。它会根据元素的数量动态分配内存空间。

元素访问:
可以通过索引来访问vector中的元素。索引从0开始,最后一个元素的索引是size( )-1。可以使用[]运算符或at()函数来访问元素。

元素添加和删除:
可以使用push_back()函数在vector的末尾添加元素,使用pop_back()函数删除末尾的元素。
还可以使用insert()函数在指定位置插入元素,使用erase()函数删除指定位置的元素。

容器大小管理:
可以使用size()函数获取vector中元素的数量,使用empty()函数检查vector是否为空。还可以使用resize()函数调整vector的大小。

迭代器:
vector提供了迭代器,可以用于遍历容器中的元素。可以使用begin()函数获取指向第一个元素的迭代器,使用end()函数获取指向最后一个元素下一位置的迭代器。

2.vector的常用函数

push_back():将元素添加到vector的末尾。

pop_back():删除vector末尾的元素。
一定保证vector非空

begin()和end():返回指向vector第一个元素和最后一个元素之后位置的迭代器。

3.vector排序去重

排序:
要对vector进行排序,可以使用标准库中的sort函数。
该函数位于头文件中。

#include <algorithm>
std::vector <T> vec ={...};
std::sort(vec.begin(),vec.end());

这里的T是vector中元素的类型
std::sort函数接受两个迭代器参数,表示要排序的范围
vec.begin()返回指向vector第一个元素的迭代器
vec.end()返回指向最后一个元素之后位置的迭代器。

去重:
该函数位于头文件中。要去除vector中的重复元素,可以使用unique函数。

首先,需要对vector进行排序,以便相同的元素相邻。然后,std::unique函数将重复的元素移动到vector的末尾,并返回一个指向不重复元素的迭代器。最后,可以使用vec.erase函数将重复元素从vector中删除。

一下是上述知识点的综合应用:

#include<bits/stdc++.h>
using namespace std;
int main(void) {
	vector <int> nums;

	nums.push_back(2);
	nums.push_back(3);
	nums.push_back(2);
	nums.push_back(6);
	nums.push_back(5);
	nums.push_back(3);
	nums.push_back(1);
	nums.push_back(3);

	for (auto& num : nums) {//排序前
		cout << num << ' ';
	}
	cout << endl;

	sort(nums.begin(), nums.end());

	for (auto& num : nums) {//排序后
		cout << num << ' ';
	}
	cout << endl;

	auto last = unique(nums.begin(), nums.end());
	//返回一个指向去重后范围的尾后迭代器

	nums.erase(last, nums.end());

	for (auto& num : nums) {//去除后
		cout << num << ' ';
	}
	cout << endl;

	nums.insert(nums.begin() + 2, 3);
	//在下标为2的地方加入3


	nums.erase(nums.begin() + 4);
	//删除下标为4的元素

	nums.clear();//清空向量

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值