1 返回vector内最大/最小元素

方法:使用algorithm库中max_element/min_element函数,该函数返回最大值/最小值所在的第一个位置,对返回值解引用求得最大值/最小值。

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

int main()
{
	vector<int> a{1,2,3,4};
	cout << *max_element(a.begin(), a.end());
	return 0;
}

2 vector内数组元素反转

目标: 实现vector容器内元素的反转,如由[1 2 3 4]变为[4 3 2 1]
(代码中故意多引入了一些关于vector的操作,以便多看多记)

方法1:使用<algorthm>中的reverse();
说明:在vector自身上进行反转操作;
代码1

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

int main()
{
	vector<int> v1{1,2,3,4};
	reverse(v1.begin(), v1.end());
	for(int i = 0; i < v1.size(); i++){
		cout << v1[i] << ' ';
	}
	cout << endl;
	return 0;
}

输出:[4 3 2 1]

方法2:使用vector自带的反转迭代器reverse_iterator,rbegin(),rend();
说明:借助另外一个vector;
代码2

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

int main()
{
	vector<int> arrayInit(10); // 初始化size为10的vector数组
	vector<int> arrayRever;
	arrayRever.reserve(arrayInit.size()); // 开辟内存空间,对应capacity大小
	for(int i = 0; i < 10; i++){
		arrayInit[i] = i;	
	}
	vector<int>::reverse_iterator riter;
	for(riter = arrayInit.rbegin(); riter != arrayInit.rend(); riter++){
		arrayRever.push_back(*riter);	
	}
	for(int i = 0; i < arrayRever.size(); i++){
		cout << arrayRever[i] << ' ';
	}
	cout << endl;
	return 0;
}

输出:[9 8 7 6 5 4 3 2 1 0]

法二的意思其实就是开辟一个新的vector,让初始vector从后往前对新vector赋值,代码如下:

#include <vector>
using namespace std;

int main()
{
	vector<int> arrayInit(10); // 初始化size为10的vector数组
	vector<int> arrayRever(arrayInit.size());
	
	for(int i = 0; i < 10; i++){
		arrayInit[i] = i;	
	}
	for(int i = arrayInit.size() - 1; i >= 0; i--){
		arrayRever[arrayInit.size() - i - 1] = 	arrayInit[i];
	}
	for(int i = 0; i < arrayRever.size(); i++){
		cout << arrayRever[i] << ' ';
	}
	cout << endl;
	
	return 0;
}

关于vector的size和capacity的题外话:
编码过程中遇到了如下问题:
首先创建一个size为10的arrayInit,然后开辟一块大小为arrayInit.size()的内存给arrayRever,用for循环基于索引为arrayRever赋值后,打印arrayRever.size()为0?而却可以输出其中的元素,如下图:
在这里插入图片描述
解决办法:如果用reserve方法开辟内存,其size依然为0,需要将索引赋值改为push_back,如下图:
在这里插入图片描述

3 判断vector中是否存在特定元素的方法

下面这篇博客写的非常好,Mark一下。
判断vector中是否存在特定元素的方法

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐