gpt4 book ai didi

c++ - boost assign list_of 不适用于双文字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:17 27 4
gpt4 key购买 nike

我想使用 boost 的 list_of初始化 vector<double> ,但似乎 vector 以整数值结尾。

我从这里的例子开始:http://www.boost.org/doc/libs/1_55_0b1/libs/assign/doc/index.html#complicated并更改 score_typevector<double>并添加一些浮点文字。这是新代码:

#include <boost/assign/list_of.hpp>
#include <boost/assign/list_inserter.hpp>
#include <boost/assert.hpp>
#include <string>
#include <vector>
#include <map>


using namespace std;
using namespace boost::assign;

int main()
{
typedef vector<double> score_type;
typedef map<string,score_type> team_score_map;
typedef pair<string,score_type> score_pair;

team_score_map group1, group2;
//
// method 1: using 'insert()'
//
insert( group1 )( "Denmark", list_of(1.1)(1) )
( "Germany", list_of(0)(0) );
BOOST_ASSERT( group1.size() == 2 );
BOOST_ASSERT( group1[ "Denmark" ][1] == 1 );
BOOST_ASSERT( group1[ "Denmark" ][0] == 1.1 );

//
// method 2: using 'list_of()'
//
group2 = list_of< score_pair >
( "Norway", list_of(1)(5.9) )
( "Andorra", list_of(1)(1) );
BOOST_ASSERT( group2.size() == 2 );
BOOST_ASSERT( group2[ "Norway" ][0] == 1 );
BOOST_ASSERT( group2[ "Norway" ][1] == 5 );
BOOST_ASSERT( group2[ "Norway" ][1] == 5.9 );

return 0;
}

方法1的最后断言insert工作正常,但方法 2 的最后断言 list_of失败。我尝试用 ((double)5.9) 初始化和 (5.9f)无济于事。

我想现在我可以通过使用 insert 来变通.

想法?

谢谢。

(我知道 C++11 初始化列表,但我想了解这里发生了什么。)

最佳答案

如果您不告诉 list_of 期望的类型,它会从第一次调用时猜测:

list_of
(0) // int
(0.5) // oops, already decided int

您可以指定:

list_of<double>(1)(5.9)

或者您可以确保第一次调用足以猜测:

list_of(1.0)(5.9)

关于c++ - boost assign list_of 不适用于双文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24291217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com