私はこれをやろうとしています:文字列の2つのベクトルを維持し、1つのベクトルが値を格納し、2番目のベクトルが同じ値の参照を格納します。を使用boost::reference_wrapper
するとうまくいくと思いましたが、そうではないようです。私のプラットフォームは Visual C++ 2008 です。
std::vector<std::string> str_vec;
str_vec.push_back("abc");
str_vec.push_back("cde");
str_vec.push_back("fgh");
std::vector<boost::reference_wrapper<std::string> > str_view;
for(std::vector<std::string>::iterator it = str_vec.begin(); it != str_vec.end(); ++it)
{
str_view.push_back(*it);
}
これはエラーです:
エラー C2664: 'std::vector<_Ty>::push_back': パラメータ 1 を std::basic_string<_Elem,_Traits,_Ax> から 'const boost::reference に変換できません
使用できboost::shared_ptr
ましたが、参照の方が私の意図をよりよく表していると思いました。このコードはおそらく C++11 を使用して動作する可能性std::reference_wrapper
がありますが、現在は利用できません。