如何将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
相关产品推荐
相关产品推荐

