c++ std::tuple用法

std::vector<std::tuple<double, int>> edges 中添加数据可以通过以下方法实现:

1. 使用 push_backstd::make_tuple

cpp 复制代码
#include <vector>
#include <tuple>

// 假设已经声明了 edges
std::vector<std::tuple<double, int>> edges;

// 添加数据
edges.push_back(std::make_tuple(3.14, 42));  // 直接构造并添加 tuple

2. 直接构造 std::tuple 对象

cpp 复制代码
edges.push_back(std::tuple<double, int>(2.718, 100)); // 显式构造 tuple

3. 使用 emplace_back(更高效,推荐)

emplace_back 会直接在容器内部构造元素,避免临时对象的拷贝:

cpp 复制代码
edges.emplace_back(1.618, 5);  // 自动推导参数类型并构造 tuple

4. 初始化列表(批量初始化)

如果要在声明时初始化:

cpp 复制代码
std::vector<std::tuple<double, int>> edges = {
    {1.1, 10},
    {2.2, 20},
    {3.3, 30}
};

5. 注意事项

  • 类型顺序 :确保 tuple 的元素顺序与声明一致(double 在前,int 在后)。
  • 效率 :优先使用 emplace_back,它比 push_back 更高效(避免一次拷贝)。
  • 头文件 :需要包含 <vector><tuple>

完整示例

cpp 复制代码
#include <iostream>
#include <vector>
#include <tuple>

int main() {
    std::vector<std::tuple<double, int>> edges;

    // 添加数据
    edges.emplace_back(3.14, 42);
    edges.push_back(std::make_tuple(2.718, 100));

    // 遍历输出
    for (const auto& edge : edges) {
        std::cout << "(" << std::get<0>(edge) << ", "
                  << std::get<1>(edge) << ")\n";
    }

    return 0;
}

输出:

复制代码
(3.14, 42)
(2.718, 100)

通过以上方法,你可以灵活地向 edges 中添加数据。

相关推荐
大飞pkz5 分钟前
【设计模式】题目小练2
开发语言·设计模式·c#·题目小练
啟明起鸣10 分钟前
【网络编程】从与 TCP 服务器的对比中探讨出 UDP 协议服务器的并发方案(C 语言)
服务器·c语言·开发语言·网络·tcp/ip·udp
007php00718 分钟前
Redis高级面试题解析:深入理解Redis的工作原理与优化策略
java·开发语言·redis·nginx·缓存·面试·职场和发展
九章云极AladdinEdu32 分钟前
深度学习优化器进化史:从SGD到AdamW的原理与选择
linux·服务器·开发语言·网络·人工智能·深度学习·gpu算力
axban33 分钟前
QT M/V架构开发实战:QStandardItemModel介绍
开发语言·数据库·qt
猿究院-赵晨鹤1 小时前
String、StringBuffer 和 StringBuilder 的区别
java·开发语言
I'm a winner1 小时前
第五章:Python 数据结构:列表、元组与字典(一)
开发语言·数据结构·python
葵野寺1 小时前
【RelayMQ】基于 Java 实现轻量级消息队列(九)
java·开发语言·rabbitmq·java-rabbitmq
大白同学4212 小时前
【C++】C++11介绍(Ⅱ)
开发语言·c++
你怎么知道我是队长2 小时前
C语言---存储类
c语言·开发语言