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 中添加数据。

相关推荐
ytttr87318 小时前
基于MATLAB的三维六面体有限元网格模型
开发语言·matlab
likerhood18 小时前
Java ArrayList 详解:从动态数组到扩容机制与常见陷阱
java·开发语言·windows
枫叶丹419 小时前
【HarmonyOS 6.0】Live View Kit 实况支持显示夕阳和赏月背景的技术解读与实践
开发语言·华为·harmonyos
AI人工智能+电脑小能手19 小时前
【大白话说Java面试题 第80题】【Mysql篇】第10题:MySQL 在什么条件下索引失效?
java·开发语言·mysql·adb·面试
风吹夏回19 小时前
Python JWT 认证实战:从原理到 PyCharm 落地指南
开发语言·python·pycharm·jwt
jieyucx19 小时前
Go 语言 JSON 序列化/反序列化:Tag 用法完全指南
开发语言·golang·json·序列化·tag
小肝一下19 小时前
STL——list
开发语言·c++·stl·list·伊雷娜
前网易架构师-高司机19 小时前
ROS2 Jazzy+Gazebo Harmonic 环境下,用 URDF 搭建机器人,配置物理属性、插件与桥接,修复车轮和激光雷达故障 (手把手保姆级教程)
开发语言·算法·golang·机器人·ros
meilindehuzi_a19 小时前
深入浅出 JavaScript 核心:从底层内存与编译阶段彻底看透 var、let、const
开发语言·javascript·ecmascript
Python+9919 小时前
C++ 注解(注释)完整讲解
java·开发语言·c++