gpt4 book ai didi

c++ - 使用基于范围的 for 循环遍历指针列表

转载 作者:行者123 更新时间:2023-12-03 06:56:40 24 4
gpt4 key购买 nike

大家好

我一直在尝试使用以下代码将列表中的所有指针重置为 nullptr,如下所示:

    for (auto item : { ptr1, ptr2, ptr3 })
item = nullptr;

问题是指向 item 的指针的拷贝,所以原始指针在最后不等于 nullptr。

我想获得对指针本身的某种引用,或者也许已经有更好的替代方法来将容器中的所有指针设置为 nullptr。如果你们中有人碰巧使用 Qt,也许在 Qt 中有一种很好的方法?提前致谢!

最佳答案

如果您要键入单个指针变量,为什么不使用链式赋值呢?

ptr1 = ptr2 = ptr3 = nullptr;  // All three pointers are nullptr.

DEMO .


[...] or maybe there is already a better alternative to setting all pointers in a container to 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
}

关于c++ - 使用基于范围的 for 循环遍历指针列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64279834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com