每个问题的提升

发布于 2024-09-04 08:30:23 字数 347 浏览 6 评论 0 原文

std::map< std::string , std::string > matrix_int;
typedef std::pair< std::string , std::string > lp_type;
BOOST_FOREACH( lp_type &row, matrix_int ){

}

这是不能遵守的: 错误 C2440:“初始化”:无法从“std::pair<_Ty1,_Ty2>”转换到“lp_type &”

当我在元素类型中有“,”时,boost doc说我可以使用typedef或预定义一个var; 但是当我想要获得参考时我该怎么办?

std::map< std::string , std::string > matrix_int;
typedef std::pair< std::string , std::string > lp_type;
BOOST_FOREACH( lp_type &row, matrix_int ){

}

this can not be complied:
error C2440: 'initializing' : cannot convert from 'std::pair<_Ty1,_Ty2>' to 'lp_type &'

when I have ',' in element type, boost doc says I can use typedef or predefine a var;
but what should I do when I want to get a reference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

压抑⊿情绪 2024-09-11 08:30:23

你的 typedef 不正确;它需要是:

typedef std::pair< const std::string , std::string > lp_type;
                   ^ note the added const

映射对中的关键元素是 const 限定的。

使用 value_type typedef 会更简洁一些;这样你就不会重复类型信息:

typedef std::map<std::string, std::string> map_t;
map_t matrix_int;
BOOST_FOREACH(map_t::value_type& row, matrix_int){

}

Your typedef is incorrect; it needs to be:

typedef std::pair< const std::string , std::string > lp_type;
                   ^ note the added const

The key element in the map pair is const-qualified.

It would be a bit cleaner to use the value_type typedef; this way you don't repeat the type information:

typedef std::map<std::string, std::string> map_t;
map_t matrix_int;
BOOST_FOREACH(map_t::value_type& row, matrix_int){

}
π浅易 2024-09-11 08:30:23

请参阅 是否可以将 boost::foreach 与 std::map 一起使用?

看起来你需要这样做:

typedef std::map< std::string, std::string > MyMap;
BOOST_FOREACH( MyMap::value_type& row, matrix_int ) {
}

See Is it possible to use boost::foreach with std::map?.

Looks like you need to do:

typedef std::map< std::string, std::string > MyMap;
BOOST_FOREACH( MyMap::value_type& row, matrix_int ) {
}
戏舞 2024-09-11 08:30:23

我认为詹姆斯·麦克内利斯是对的。我将添加建议,即您利用 std::map 提供的 value_type typedef。那么你的代码可能如下所示:

typedef std::map< std::string , std::string > MyMap;
MyMap matrix_int;

BOOST_FOREACH( MyMap::value_type &row, matrix_int ){

}

I think James McNellis is right. I'll add the suggestion that you take advantage of the value_type typedef that std::map provides. Then your code could look like this:

typedef std::map< std::string , std::string > MyMap;
MyMap matrix_int;

BOOST_FOREACH( MyMap::value_type &row, matrix_int ){

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文