c++ - 访问元组 vector 中的元素 C++

我有以下代码主体。

#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/

相关文章:

c# - 如何在 C# 中创建 JSON 对象

next.js - 单击链接后如何关闭模态窗口

maven - 如何找到 Log4j 的深层用法

svelte - svelte.config.js 错误语法错误 : Cannot use impo

bash - 在多个文件中将每第 4 次出现的 char "_"替换为 "@"

r - 忽略 R 中某些值的行求和值

regex - 在 perl 中使用 foreach 代替 map 和 grep

r - 缩短 R 中的长向量

vue.js - 有没有可能把它变成 '<script setup>' ?我尝试了很多方法但可

rust - 特征的静态工厂方法