【发布时间】:2012-04-22 20:51:43
【问题描述】:
我正在尝试这样做:维护两个字符串向量,其中一个向量存储值,第二个存储相同值的引用。我认为使用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>' 转换为 'const boost::reference
我可以使用boost::shared_ptr,但我认为引用可以更好地表达我的意图。这段代码可能可以使用std::reference_wrapper 在 C++11 中工作,但我现在无法使用。
【问题讨论】:
-
什么是visual c++ 2009?据我所知,有 2008、2010 和 2011 测试版。