访问向量索引C++
Access Vectors indexes in C++
我自己就是一个Java人,但我正在尝试调试C++代码。我们如何访问 C++ 中给定索引处的 Vector 值?
有一个 3D 矢量初始化如下:
vector<vector<vector<uint32_t> > > samples_durations;
我假设(像其他语言一样(使用看起来像samples_durations.get(0,0,0)
的命令访问它们,但我看到的只是类似数组的访问samples_durations[0][0][0]
。
这是它在C++的正常工作方式吗?!我认为由于向量本质上是一个类,访问将使用函数。
有两种方法可以使用索引访问向量。 您可以使用执行边界检查的at
也可以使用不执行边界检查operator[]
。 这意味着当你有
vector<vector<vector<uint32_t> > > samples_durations;
您将使用
samples_durations[0][0][0]
或
samples_durations.at(0).at(0).at(0)
也就是说,通常vector<vector<vector<uint32_t> > >
不是您希望构建数据的方式。std::vector
元素是连续的,但基础缓冲区不需要在内存中彼此相邻。 这可能会导致迭代时出现大量缓存未命中。 通常,您要做的是使用足够大的单维向量来存储所有元素,然后将其包装在一个类中,该类重载operator()
以访问数据。 这为您提供了类似
my_efficient_3d_arry data;
data(0,0,0);
是的,这是正常的方式。您可以简单地使用方括号按索引访问向量的每个维度。
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 如何为圆环创建索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 查找字符在两个索引之间出现的次数
- Azure Kinect 使用正文索引映射裁剪正文
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 数组索引重载错误
- 如何在 std::vector 中找到<bool>哪些索引是真的?