are*_*slp 2 c++ boost boost-foreach
std::map< std::string , std::string > matrix_int;
typedef std::pair< std::string , std::string > lp_type;
BOOST_FOREACH( lp_type &row, matrix_int ){
}
Run Code Online (Sandbox Code Playgroud)
这不能被遵守:错误C2440:'初始化':无法从'std :: pair <_Ty1,_Ty2>'转换为'lp_type&'
当我在元素类型中有','时,boost doc说我可以使用typedef或预定义var; 但是当我想要参考时我该怎么办?
Jam*_*lis 10
你的typedef不正确; 它需要是:
typedef std::pair< const std::string , std::string > lp_type;
^ note the added const
Run Code Online (Sandbox Code Playgroud)
映射对中的关键元素是const限定的.
使用value_typetypedef 会有点干净; 这样您就不会重复类型信息:
typedef std::map<std::string, std::string> map_t;
map_t matrix_int;
BOOST_FOREACH(map_t::value_type& row, matrix_int){
}
Run Code Online (Sandbox Code Playgroud)