我正在尝试这样做:维护两个字符串向量,其中一个向量存储值,第二个存储相同值的引用。我认为 usingboost::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
,但我现在不可用。