C2672 'std::construct_at':找不到匹配的重载函数 main

问题描述 投票:0回答:1

使用 C++ 20 Visual Studio 2022 64 位版本 17.11.3 在非常简单的代码上生成错误

编译器代码库中似乎出现错误。 据我所知,代码没问题。我知道不使用使用这只是此时学习代码。

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

using std::vector;


vector<int> read_input() {
    std::string line;
    std::ifstream fp;
    vector<int> data;
    int word;

    fp.open("input.txt");
    if (fp) {
        while (getline(fp, line, '\n')) {
            vector<int> tempdata;
            std::istringstream ss(line);
            while (ss >> word) {
                tempdata.emplace_back(word);
            }
            data.emplace_back(tempdata);
        }
        
        fp.close();
    }
    else
        perror("File opening failed");
    
    return data;
}
c++
1个回答
1
投票

您正在尝试将

vector<int>
插入到
vector<int>
中。那是行不通的。
vector<int>
不可转换为
int

您可以将

vector::insert
tempdata
中的迭代器一起使用。这告诉它将其插入到
data
:

的末尾
data.insert(data.end(), tempdata.begin(), tempdata.end());
//          ^^^^^^^^^^
//       insert before this
© www.soinside.com 2019 - 2024. All rights reserved.