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

C++如何读取n行整数并存储到vector<vector<int>>容器中?

C++读取单行整数存储到二维vector的最优实现

完全不需要手动拆分字符串,用标准库的流操作就能实现安全且高效的逻辑,比strtok方案更简洁易维护,性能也更优。

完整实现代码

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

int main() {
    // 可选:关闭同步大幅提升流读取速度,超大输入场景必加
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    // 吃掉读取n后留在缓冲区的换行符,避免第一次getline读空
    cin.ignore();

    vector<vector<int>> vec;
    vec.reserve(n); // 提前分配空间减少扩容开销

    while (n--) {
        string line;
        getline(cin, line);
        istringstream iss(line);
        vector<int> tmp;
        int num;
        while (iss >> num) {
            tmp.push_back(num);
        }
        vec.push_back(std::move(tmp)); // 移动语义避免拷贝
    }

    // 后续处理vec的逻辑
    return 0;
}

方案优势

  • 安全可靠:避免了strtok线程不安全、修改原字符串、手动类型转换易出错的问题,流操作自带类型校验,异常处理更规范
  • 性能优异:标准库流底层已经做过优化,加上关闭同步的配置后,性能远高于手动调用strtok拆分的实现;提前预分配空间+移动语义也完全避免了不必要的内存拷贝
  • 代码简洁:没有冗余的字符串操作逻辑,可读性高,维护成本低

内容的提问来源于stack exchange,提问作者Zeros

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:04