1. ホーム
  2. c++

[解決済み] なぜ関数から'vector'を返してもいいのですか?

2022-10-07 01:21:34

質問

このコードについて考えてみてください。私はこのタイプのコードを何度か見たことがあります。 words はローカルなベクトルです。これを関数から返すにはどうすればよいのでしょうか?

死なないことを保証できるのでしょうか?

 std::vector<std::string> read_file(const std::string& path)
 {
    std::ifstream file("E:\\names.txt");

    if (!file.is_open())
    {
        std::cerr << "Unable to open file" << "\n";
        std::exit(-1);
    }

    std::vector<string> words;//this vector will be returned
    std::string token;

    while (std::getline(file, token, ','))
    {
        words.push_back(token);
    }

    return words;
}

どのように解決するのですか?

<ブロッククオート

死なないという保証はありますか?

参照が返されない限り、全く問題ありません。 words は結果を受け取る変数に移動されます。

ローカル変数は、移動(またはコピー)された後、スコープ外に出ます。