gpt4 book ai didi

C++11 基于范围的和映射 : readability

转载 作者:可可西里 更新时间:2023-11-01 15:14:51 26 4
gpt4 key购买 nike

<分区>

新的基于范围的 for 循环确实提高了可读性并且非常易于使用。但是,请考虑以下几点:

map<Foo,Bar> FooAndAssociatedBars;

for (auto& FooAndAssociatedBar : FooAndAssociatedBars) {
FooAndAssociatedBar.first.doSth();
FooAndAssociatedBar.second.doSomeOtherThing();
}

这可能是一个细节,但我发现如果我可以做类似的事情,它会更具可读性:

for ( (auto& foo, auto& bar) : FooAndAssociatedBars) {
foo.doSth();
bar.doSomeOtherThing();
}

你知道等效的语法吗?

编辑:好消息:C++17 有一个解决这个问题的提案,称为结构化绑定(bind)(参见 1)。在 C++17 中,您应该能够编写:

tuple<T1,T2,T3> f(/*...*/) {
/*...*/
return {a,b,c};
}
auto [x,y,z] = f(); // x has type T1, y has type T2, z has type T3

解决了这个可读性问题

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