1
#include <vector>
using namespace std;
struct TempData {
vector<int> data;
TempData() {
for(int i = 0; i < 100; i++) data.push_back(i);
}
// vector<int> GetData() { // function 1
// return move(data);
// }
vector<int>&& GetData() { // function 2
return move(data);
}
};
int main() {
vector<int> v;
{
TempData td;
v = td.GetData();
}
}
function 1
とfunction 2
の違いは何ですか?メンバー関数return rvalueメンバー変数の参照
function 1
vector
をmove(data)
で構成し、次にvector
をv
に割り当てますか?
追加の詳細はありません...
1つの関数は新しいベクトルを返し、もう1つの関数は新しいベクトルを返します。 –
参照修飾子のオーバーロードを考慮する必要があります。 https://stackoverflow.com/questions/21052377/whats-a-use-case-for-overloading-member-functions-on-reference-qualifiers –
これを行う必要がある場合は、オブジェクトを渡すことを検討してください。それを返す必要はありません。 – keith