简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解C++之vector元素访问函数operator[]、at、front、back、data用法
-
operator[]
:
- 作用:通过索引访问
vector
中的元素。 - 用法:使用
operator[]
函数,通过指定索引来访问vector
中的元素。索引从0开始,可以使用整数或表达式作为索引。
-
at
:
- 作用:通过索引访问
vector
中的元素,并提供边界检查。 - 用法:使用
at
函数,通过指定索引来访问vector
中的元素。与operator[]
相比,at
函数会进行边界检查,若索引超出范围,则会抛出std::out_of_range异常。
-
front
:
- 作用:返回
vector
的第一个元素的引用。 - 用法:使用
front
函数,返回vector
的第一个元素的引用。
-
back
:
- 作用:返回
vector
的最后一个元素的引用。 - 用法:使用
back
函数,返回vector
的最后一个元素的引用。
-
data
:
- 作用:返回指向
vector
内部存储元素的指针。 - 用法:使用
data
函数,返回指向vector
内部存储元素的指针。可以通过该指针来直接访问和修改vector
的元素。
2.应用实例
1. operator[]
: 通过索引访问vector
中的元素,类似于数组的下标访问。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用operator[]访问vector元素
int element = nums[2]; // 访问索引为2的元素,值为3
std::cout << "Element at index 2: " << element << std::endl;
return 0;
}
2. at
: 通过索引访问vector
中的元素,与operator[]
类似,但提供了边界检查,如果索引超出范围,会抛出std::out_of_range
异常。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用at访问vector元素
int element = nums.at(3); // 访问索引为3的元素,值为4
std::cout << "Element at index 3: " << element << std::endl;
return 0;
}
3. front
: 返回vector
中的第一个元素。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用front访问vector的第一个元素
int firstElement = nums.front(); // 第一个元素,值为1
std::cout << "First element: " << firstElement << std::endl;
return 0;
}
4. back
: 返回vector
中的最后一个元素。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用back访问vector的最后一个元素
int lastElement = nums.back(); // 最后一个元素,值为5
std::cout << "Last element: " << lastElement << std::endl;
return 0;
}
5. data
: 返回指向vector
中第一个元素的指针。
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用data返回指向vector第一个元素的指针
int* ptr = nums.data();
std::cout << "First element using data pointer: " << *ptr << std::endl;
return 0;
}