我有以下代码主体。
#include <iostream>
#include <vector>
#include <tuple>
int main() {
std::vector<std::tuple<int, int>> edges(4,{1,2});
for (auto i = std::begin (edges); i != std::end (edges); ++i) {
std::cout << std::get<0>(i) << " "<< std::get<1>(i)<< " ";
}
}
在我看来,这是有道理的,我有一个正在初始化的元组 vector 。然后我遍历 vector ,分别打印元组的两个元素。
但是代码doesn't work归来
8:26: error: no matching function for call to 'get'
std::cout << std::get<0>(i) << " "<< std::get<1>(i)<< " ";
^~~~~~~~~~~
谁能解释一下为什么?
最佳答案
我会更改为基于范围的 for
循环
for (auto const& edge : edges) {
std::cout << std::get<0>(edge) << " "<< std::get<1>(edge)<< " ";
}
否则要访问每个边,您需要使用 *
取消引用您的迭代器以获取实际的元组本身
for (auto iter = std::begin(edges); iter != std::end(edges); ++iter) {
std::cout << std::get<0>(*iter) << " "<< std::get<1>(*iter)<< " ";
}
https://stackoverflow.com/questions/70290457/