首页 > 解决方案 > C++:我可以在另一个向量中定义向量吗?

问题描述

在 C/C++ 纯数组中,您可以在另一个数组中定义一个数组,例如:

int a[5];
int *p = &a[1];

所以如果你改变p[0]它会影响a[1]等等。向量中是否有类似的机制?

vector<int> a(5, 0);
?

标签: c++stdvector

解决方案


你的第一个例子

int a[5];
int *p = &a[1];

没有在另一个数组中定义一个数组,它只创建一个指向现有数组中元素的指针。对于标准容器std::vector,可以通过使用迭代器来实现:

vector<int> a(5, 0);           // a = [0, 0, 0, 0, 0]
auto iterator = a.begin() + 1; // "points" to a[1]
*iterator = 2;                 // a = [0, 2, 0, 0, 0]

迭代器广泛用于标准库和提供对容器(子)范围的访问的首选解决方案。


如果您可以使用 C++20 或更高版本,则可能需要查看std::span


推荐阅读