向 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)); // 直接构造并添加 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
中添加数据。