C++STL容器 – std::vector元素访问方式总结
1 std::vector元素访问方式
std::vector提供多种方式访问容器中的元素。std::vector的at函数,[]操作符,front函数,back函数都可以对std::vector的元素进行读写操作。
1.1 at函数
访问指定索引元素,并在访问时进行索引边界检查。如果索引越界,将抛出std::out_of_range异常。
std::vector<int> myVector{1,2,3,4,5};
for (int i = 0; i < myVector.size(); ++i)
{
std::cout << myVector.at(i) << " ";
}
std::cout << std::endl;
for (int i = 0; i < myVector.size(); ++i)
{
myVector.at(i) = myVector.at(i) - 1;
std::cout << myVector.at(i) << " ";
}
std::cout << std::endl;
结果:
1 2 3 4 5
0 1 2 3 4
可通过以下代码捕获索引越界异常:
try
{
myVector.at(6) = 666;
}
catch (std::out_of_range const& exception_info)
{
std::cout << exception_info.what() << std::endl;
}
1.2 []操作符
访问指定索引元素,但是不进行索引越界检查。
std::vector<int> myVector{1,2,3,4,5};
for (int i = 0; i < myVector.size(); ++i)
{
std::cout << myVector[i] << " ";
}
std::cout << std::endl;
for (int i = 0; i < myVector.size(); ++i)
{
myVector[i] = myVector[i] - 1;
std::cout << myVector[i] << " ";
}
std::cout << std::endl;
结果:
1 2 3 4 5
0 1 2 3 4
1.3 front函数
访问std::vector的第一个元素。
std::vector<int> myVector{1,2,3,4,5};
std::cout << myVector.front() << std::endl;
myVector.front() = 10;
std::cout << myVector.front() << std::endl;
结果:
1
10
1.4 back函数
访问std::vector的最后一个元素。
std::vector<int> myVector{1,2,3,4,5};
std::cout << myVector.back() << std::endl;
myVector.back() = 10;
std::cout << myVector.front() << std::endl;
结果:
5
10
1.5 data函数
返回指向用作元素存储的基础数组的指针。对于非空容器,返回指向第一个元素的地址的指针。
std::vector<int> myVector{1,2,3,4,5};
const unsigned int vec_size = myVector.size();
const int* vec_pointer = myVector.data();
for (int i = 0; i < vec_size; ++i)
{
std::cout << vec_pointer[i] << " ";
}
std::cout << std::endl;
结果:
1 2 3 4 5
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++STL容器 – std::vector元素访问方式总结
原文链接:https://www.stubbornhuang.com/1977/
发布于:2022年02月22日 16:37:19
修改于:2023年06月26日 20:37:30
当前分类随机文章推荐
- CMake - 链接多线程pthread库的几种方式 阅读58次,点赞0次
- C++11/std::atomic - 原子变量(不加锁实现线程互斥) 阅读6882次,点赞2次
- C++ – 字节数组byte[]或者unsigned char[]与long double的相互转换 阅读1293次,点赞0次
- C++ - std::unordered_map中使用结构体或者vector等复杂的数据结构作为Key值 阅读1220次,点赞0次
- C++ - C++实现Python numpy的矩阵维度转置算法,例如(N,H,W,C)转换为(N,C,H,W) 阅读5056次,点赞4次
- C++ - int转string方法总结 阅读6978次,点赞0次
- C++11 - std::bind简要介绍以及可绑定函数的几种形式总结 阅读5018次,点赞4次
- C++ - std::string输出双引号到字符串 阅读3916次,点赞0次
- GCC/G++中编译优化选项-O -O0 -O1 -O2 -O3 -Os -Ofast -Og -Oz各自的区别和作用 阅读5700次,点赞4次
- C++ - return this和return *this的含义和区别 阅读652次,点赞0次
全站随机文章推荐
- OnnxRuntime - 如何部署多个输入和多个输出tensor的onnx模型 阅读147次,点赞0次
- 如何正确的选择深度学习模型工业化部署的方式 阅读1527次,点赞0次
- C++ - 想用C++写服务器?C/C++ web服务第三方库、框架整理 阅读578次,点赞0次
- 深度学习 - 从矩阵运算的角度理解Transformer中的self-attention自注意力机制 阅读1549次,点赞0次
- C++ - std::string字符串格式化方法总结 阅读1956次,点赞0次
- WordPress - get_edit_post_link函数详解 阅读1346次,点赞0次
- 资源分享 - C++程序设计语言(第4部分 标准库),原书第4版 高清PDF下载 阅读3375次,点赞2次
- Python3爬虫 - requests的请求响应状态码(requests.status_code) 阅读9647次,点赞4次
- Modern OpenGL - GLSL着色语言2:GLSL入口函数和GLSL中的变量 阅读3036次,点赞0次
- WPF - 代码动态更换按钮的背景图片 阅读3558次,点赞0次
评论
169