向 std::vector<std::tuple<double, int>> edges 中添加数据可以通过以下方法实现:
1. 使用 push_back 和 std::make_tuple
        
            
            
              cpp
              
              
            
          
          #include <vector>
#include <tuple>
// 假设已经声明了 edges
std::vector<std::tuple<double, int>> edges;
// 添加数据
edges.push_back(std::make_tuple(3.14, 42));  // 直接构造并添加 tuple2. 直接构造 std::tuple 对象
        
            
            
              cpp
              
              
            
          
          edges.push_back(std::tuple<double, int>(2.718, 100)); // 显式构造 tuple3. 使用 emplace_back(更高效,推荐)
emplace_back 会直接在容器内部构造元素,避免临时对象的拷贝:
            
            
              cpp
              
              
            
          
          edges.emplace_back(1.618, 5);  // 自动推导参数类型并构造 tuple4. 初始化列表(批量初始化)
如果要在声明时初始化:
            
            
              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 中添加数据。