如何编写适配C++14编译器的结构化绑定等效替代语句
C++14等效实现代码
C17的结构化绑定本质是tuple-like类型元素的自动拆解语法糖,在C14中手动完成拆解即可实现等效逻辑。
场景1:遍历容器ch的元素为std::pair类型
这是绝大多数场景的情况,等效代码如下:
for (auto& elem : ch) { auto _val = elem.first; auto id = elem.second; // 此处保留原循环内的业务逻辑即可 }
场景2:遍历容器ch的元素为std::tuple或其他支持std::get的自定义tuple-like类型
等效代码如下:
for (auto& elem : ch) { auto _val = std::get<0>(elem); auto id = std::get<1>(elem); // 此处保留原循环内的业务逻辑即可 }
注意事项
- 如果原代码不需要修改元素值,可将遍历声明改为
const auto& elem避免不必要拷贝,性能更优 - 结构化绑定的引用/const属性可以完全同步到遍历变量
elem的声明上,比如原绑定是auto&& [_val, id],对应C++14就写auto&& elem即可匹配语义
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

