gpt4 book ai didi

c++ - for 循环 - 遍历特定元素

转载 作者:行者123 更新时间:2023-11-28 01:40:13 25 4
gpt4 key购买 nike

我有以下数据结构:

struct T
{
std::string name;
bool active;
};

然后我想遍历 T 的 vector ,但只针对事件元素:

std::vector<T> myVector;
//fill vector
for(const auto& item: myVector)
{
if(!item.active)
{
continue;
}
//do something;
}

是否有任何功能可以在不使用 if 和/或 continue 语句的情况下实现这一目标?

最佳答案

如果你真的想消除检查而不只是隐藏它,那么使用一个单独的容器来存储元素的索引,其中 active为真,并替换 for循环遍历另一个容器中的所有索引。

确保每次 vector 更改时更新索引容器。

#include <string>
#include <vector>

struct T
{
std::string name;
bool active;
};

int main()
{
std::vector<T> myVector;
using Index = decltype(myVector)::size_type;
std::vector<Index> indicesActive;

// ...

for (auto index : indicesActive)
{
auto const& item = myVector[index];
// ...
}
}

如果不了解问题的背景,很难说这是否值得。


请注意,您可能可以更换 Tstd::optional<std::string>如果你的编译器已经支持 std::optional .

关于c++ - for 循环 - 遍历特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47486627/

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