実現したいこと・試したこと
あるvectorの任意の値の参照を新たなvectorの要素に設定したいです.
とりあえず,ポインタを使用することでそれらしい挙動を示すソースコードは書けました.
しかし,ポインタであるが故に毎回アスタリスクを書かなければなりません.
これは非常に使い勝手が悪いです.
これに変わる案がありましたら,ぜひ教えてください.
よろしくお願いします.
該当のソースコード
C++
1#include <iostream> 2#include <vector> 3std::vector<int *> func(std::vector<int> *vec, const std::vector<int> &idx) { 4 std::vector<int *> ret; 5 for (int i = 0; i < idx.size(); ++i) { 6 ret.emplace_back(&vec->at(idx.at(i))); 7 } 8 return ret; 9} 10int main() { 11 std::vector<int> vec = { 0, 1, 2, 3, 4, 5 }; 12 std::vector<int> idx = { 0, 2, 5 }; 13 std::vector<int *> ref = func(&vec, idx); 14 for (int i = 0; i < ref.size(); ++i) { 15 *ref.at(i) += 10; // 「*」をつけたくない 16 } 17 for (int i = 0; i < vec.size(); ++i) { 18 std::cout << vec.at(i) << " "; 19 } 20 std::cout << std::endl; 21 return 0; 22}
補足情報(FW/ツールのバージョンなど)
C++11が望ましいですが,C++であればバージョンは限定しません.
回答2件
あなたの回答
tips
プレビュー