c++ vector常用操作
目标: 实现vector容器内元素的反转,如由[1 2 3 4]变为[4 3 2 1]方法1:使用<algorthm>中的reverse()代码1:#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){vector<int&g
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中是否存在特定元素的方法
更多推荐
所有评论(0)