简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解C++之vector成员函数begin、end、rebegin、rend、cbegin、cend、crbegin、crend作用。
C++的vector是一种动态数组,它提供了一系列成员函数来操作和访问其元素。下面是这些成员函数的作用和用法:
-
- begin():返回指向vector第一个元素的迭代器。
-
- end():返回指向vector最后一个元素的下一个位置的迭代器。
-
- rbegin():返回指向vector最后一个元素的迭代器,用于逆向遍历。
-
- rend():返回指向vector第一个元素前一个位置的逆向迭代器,用于逆向遍历的结束位置。
-
- cbegin():与begin()类似,返回指向vector第一个元素的const迭代器,不允许修改元素。
-
- cend():与end()类似,返回指向vector最后一个元素的下一个位置的const迭代器,不允许修改元素。
-
- crbegin():与rbegin()类似,返回指向vector最后一个元素的const逆向迭代器,逆向不可修改。
-
- crend():与rend()类似,返回指向vector第一个元素前一个位置的const逆向迭代器,逆向不可修改。
2.应用实例
1. begin()
函数返回一个指向vector第一个元素的迭代器。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用begin()函数获取第一个元素的迭代器
std::vector<int>::iterator it = vec.begin();
// 输出第一个元素
std::cout << "第一个元素:" << *it << std::endl;
return 0;
}
2. end()
函数返回一个指向vector最后一个元素的下一个位置的迭代器。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用end()函数获取最后一个元素的下一个位置的迭代器
std::vector<int>::iterator it = vec.end();
// 输出最后一个元素的下一个位置的元素,此时应为未定义的值
std::cout << "最后一个元素的下一个位置的元素:" << *it << std::endl;
return 0;
}
3. rbegin()
函数返回一个指向vector最后一个元素的逆向迭代器。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用rbegin()函数获取最后一个元素的逆向迭代器
std::vector<int>::reverse_iterator rit = vec.rbegin();
// 输出最后一个元素
std::cout << "最后一个元素:" << *rit << std::endl;
return 0;
}
4. rend()
函数返回一个指向vector第一个元素的前一个位置的逆向迭代器。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用rend()函数获取第一个元素的前一个位置的逆向迭代器
std::vector<int>::reverse_iterator rit = vec.rend();
// 输出第一个元素的前一个位置的元素,此时应为未定义的值
std::cout << "第一个元素的前一个位置的元素:" << *rit << std::endl;
return 0;
}
5. cbegin()
函数与begin()
类似,返回一个指向vector第一个元素的const迭代器,用于访问vector的元素但不能修改它们。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用cbegin()函数获取第一个元素的const迭代器
std::vector<int>::const_iterator it = vec.cbegin();
// 尝试修改第一个元素,将会编译错误
//*it = 10;
// 输出第一个元素
std::cout << "第一个元素:" << *it << std::endl;
return 0;
}
6. cend()
函数与end()
类似,返回一个指向vector最后一个元素的下一个位置的const迭代器,用于访问vector的元素但不能修改它们。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用cend()函数获取最后一个元素的下一个位置的const迭代器
std::vector<int>::const_iterator it = vec.cend();
// 尝试修改最后一个元素的下一个位置的元素,将会编译错误
//*it = 10;
// 输出最后一个元素的下一个位置的元素,此时应为未定义的值
std::cout << "最后一个元素的下一个位置的元素:" << *it << std::endl;
return 0;
}
7. crbegin()
函数与rbegin()
类似,返回一个指向vector最后一个元素的const逆向迭代器,用于访问vector的元素但不能修改它们。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用crbegin()函数获取最后一个元素的const逆向迭代器
std::vector<int>::const_reverse_iterator rit = vec.crbegin();
// 尝试修改最后一个元素,将会编译错误
//*rit = 10;
// 输出最后一个元素
std::cout << "最后一个元素:" << *rit << std::endl;
return 0;
}
8. crend()
函数与rend()
类似,返回一个指向vector第一个元素的前一个位置的const逆向迭代器,用于访问vector的元素但不能修改它们。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用crend()函数获取第一个元素的前一个位置的const逆向迭代器
std::vector<int>::const_reverse_iterator rit = vec.crend();
// 尝试修改第一个元素的前一个位置的元素,将会编译错误
//*rit = 10;
// 输出第一个元素的前一个位置的元素,此时应为未定义的值
std::cout << "第一个元素的前一个位置的元素:" << *rit << std::endl;
return 0;
}