c++ - 使用基于范围的 for 循环遍历指针列表
问题描述
今天是个好日子,
我一直在尝试使用以下代码将列表中的所有指针重置为 nullptr,如下所示:
for (auto item : { ptr1, ptr2, ptr3 })
item = nullptr;
问题是指针的副本是指向项目的,所以原始的ptr最后不等于nullptr。
我想获得对指针本身的某种引用,或者也许已经有更好的替代方法将容器中的所有指针设置为 nullptr。如果你们中的任何人碰巧使用 Qt,也许有一个在 Qt 中做这件事的好方法?提前致谢!
解决方案
如果您要输入单个指针变量,为什么不直接使用链式赋值呢?
ptr1 = ptr2 = ptr3 = nullptr; // All three pointers are nullptr.
演示。
[...] 或者也许已经有更好的替代方法来将容器中的所有指针设置为
nullptr
.
如果与单独的命名指针变量相比,您将指针放在实际容器中,则可以使用基于范围的 for 循环来写入和读取容器的指针元素:
#include <array>
#include <ios>
#include <iostream>
// Container of 'pointer-to-const-int' elements.
using MyPointersArray = std::array<int const*, 3>;
void inspectNullptrness(const MyPointersArray& arr) {
for (const auto& p : arr) {
std::cout << std::boolalpha
<< (p == nullptr) << " ";
}
}
int main() {
MyPointersArray pointers{nullptr, nullptr, nullptr};
const int a = 42;
inspectNullptrness(pointers); // true true true
// Set pointers.
for(auto& p : pointers) { p = &a; }
inspectNullptrness(pointers); // false false false
// Reset pointers.
for(auto& p : pointers) { p = nullptr; }
inspectNullptrness(pointers); // true true true
}
推荐阅读
- css - two border color example explained
- express - mongoose query return array instead of object
- python - Python:如果名称用逗号分隔并在单独的行上,如何从文件中读取名称?
- c++ - 如何在 SFML for C++ 中单独访问每个形状/对象
- codenameone - 区分服务器端错误和连接问题
- python-3.x - 在 PyCharm 社区版上从 BeautifulSoup 导入 bs4 不起作用
- javascript - 来自 V-TAB vuetify 上的 API 的数据,使用 axios get vue js
- angular - 使用 Highcharts 在 Angular8 中,类型“number[]”与类型“XrangePointOptionsObject”没有共同的属性
- go - 将字符串(键)映射到数字(或任何数据)
- angular - 我如何使第一个 div 默认/在页面加载时可见?