C++ 是否有另一种方法来首先访问成员和第二个访问成员,而不是对 std::vector <std::pair <int, int>> 使用范围 for 循环?

Mic*_*sen 3 c++ stdvector std-pair

前几天我解决了另一个问题,涉及一个std::vector <std::pair<int,int>>被调用的name.

我的问题是,如何访问这种类型的name.firstname.second

我最终使用了一个 ranged-for 循环,这解决了我的问题

for(i : name) { i->first , i->second}
Run Code Online (Sandbox Code Playgroud)

但是,还有别的办法吗?我对如何在正常for循环中访问它特别感兴趣,例如

for(int i = 0; i < name.size(); i++) { std::vector::std::pair::name.first}
Run Code Online (Sandbox Code Playgroud)

有人可以为我解释一下吗?

Cal*_*eth 6

在 C++17 中,您可以使用结构化绑定

for (auto & [a, b] : name) {
    // a is a reference to the first of each pair
    // b is a reference to the second of each pair
}
Run Code Online (Sandbox Code Playgroud)