You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将vector<pair<int,int>>元素存入vector<vector<int>>?

将vector<pair<int,int>>转换为vector<vector>的实现方法

方法一:手动遍历转换

直接遍历原容器中的每个pair<int,int>元素,把每个pair的两个成员存入临时vector<int>,再将这个临时容器添加到目标容器vv中。

示例代码:

#include <vector>
#include <iostream>
using namespace std;

int main() {
    // 初始化原容器
    vector<pair<int, int>> v = {{1,3}, {3,7}, {8,9}};
    vector<vector<int>> vv;

    // 遍历完成转换
    for (const auto& p : v) {
        vv.push_back({p.first, p.second});
    }

    // 验证转换结果(可选)
    for (const auto& vec : vv) {
        for (int num : vec) {
            cout << num << " ";
        }
        cout << endl;
    }
    return 0;
}

方法二:使用std::transform算法

借助STL的transform算法结合lambda表达式,能更简洁地完成转换,适合偏好函数式编程风格的场景。

示例代码:

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

int main() {
    vector<pair<int, int>> v = {{1,3}, {3,7}, {8,9}};
    vector<vector<int>> vv;
    vv.reserve(v.size()); // 预分配空间,减少频繁扩容的性能损耗

    transform(v.begin(), v.end(), back_inserter(vv),
        [](const pair<int, int>& p) {
            return vector<int>{p.first, p.second};
        });

    // 验证转换结果(可选)
    for (const auto& vec : vv) {
        for (int num : vec) {
            cout << num << " ";
        }
        cout << endl;
    }
    return 0;
}

注意事项

  • 必须包含基础头文件#include <vector>,使用transform时要额外添加#include <algorithm>。
  • 若原容器元素数量较多,提前用reserve(v.size())给目标容器预分配内存,能提升程序运行效率。

内容的提问来源于stack exchange,提问作者Gate computer science learning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:15:55