1
移動セマンティクスのためにforループ範囲ベースにコードを簡素化しようとしたとき、私は私のコードのサイズを削減し、簡素化しようとしているが、このエラーが発生しましたよための一致なし:「演算子は[]」
BucketSort.cpp: In member function ‘void BucketSort::sort(unsigned int)’:
BucketSort.cpp:118:34: error: no match for ‘operator[]’ (operand types are ‘std::vector<unsigned int> [10]’ and ‘std::vector<unsigned int>’)
std::move(std::begin(vecs[i]), std::end(vecs[i]), std::back_inserter(numbersToSort));
^
BucketSort.cpp:118:53: error: no match for ‘operator[]’ (operand types are ‘std::vector<unsigned int> [10]’ and ‘std::vector<unsigned int>’)
std::move(std::begin(vecs[i]), std::end(vecs[i]), std::back_inserter(numbersToSort));
^
make: *** [BucketSort.o] Error 1
Ivans-MacBook-Pro:CS6771A5-ParallelBucketSort ivanteong$
Iから簡素化しようとしている:範囲ベースのforループに
numbersToSort = std::move(vecs[0]); // bucket containing 0 (handle case where there is a number that is 0)
std::move(std::begin(vecs[1]), std::end(vecs[1]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[2]), std::end(vecs[2]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[3]), std::end(vecs[3]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[4]), std::end(vecs[4]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[5]), std::end(vecs[5]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[6]), std::end(vecs[6]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[7]), std::end(vecs[7]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[8]), std::end(vecs[8]), std::back_inserter(numbersToSort));
std::move(std::begin(vecs[9]), std::end(vecs[9]), std::back_inserter(numbersToSort));
:私の.hファイルに
for (auto i : vecs) {
std::move(
std::begin(vecs[i]),
std::end(vecs[i]),
std::back_inserter(numbersToSort)
);
}
宣言は以下のとおりです。
std::vector<unsigned int> numbersToSort;
std::vector<unsigned int> vecs[10] = {
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>(),
std::vector<unsigned int>()
};
何が間違っているのですか?
ありがとうございました! – iteong