c++ - C++:我可以在另一个向量中定义向量吗?
问题描述
在 C/C++ 纯数组中,您可以在另一个数组中定义一个数组,例如:
int a[5];
int *p = &a[1];
所以如果你改变p[0]
它会影响a[1]
等等。向量中是否有类似的机制?
vector<int> a(5, 0);
?
解决方案
你的第一个例子
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
。
推荐阅读
- google-analytics - 如何使用 Barba.js 实现谷歌分析
- python - Discord.py 无法定义频道 [已修复]
- database - 我需要在 Postgresql 中增加 max_connections 吗?
- intellij-idea - IntelliJ IDEA for Mac:缩写(文本直接替换)
- azure - start_logging 和 run.get_context 之间的区别
- reactjs - × FirebaseError: Function CollectionReference.doc() 要求其第一个参数为非空字符串类型,但它是:自定义 Object 对象
- kotlin - Kotlin 中 JVM 上数字表示的意外行为
- windows - 如果我想留出要分配给服务器的地址范围
- reactjs - 内容安全策略不允许 img-src 的外部站点
- visual-studio - Visual Studio 安装程序项目