访问向量索引C++

Access Vectors indexes in C++

本文关键字:C++ 索引 向量 访问      更新时间:2023-10-16

我自己就是一个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);

是的,这是正常的方式。您可以简单地使用方括号按索引访问向量的每个维度。