Boost assign list_of对双字面值不起作用
boost assign list_of does not work with double literals?
我想使用boost的list_of
来初始化vector<double>
,但似乎矢量最终具有整数值。
我从这里的示例http://www.boost.org/doc/libs/1_55_0b1/libs/assign/doc/index.html#complicated开始,并将score_type
更改为vector<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)
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- C++正在写入mongo,字符串字段在聚合管道中不起作用
- 套接字不起作用,当添加 opencv libriary
- 查询中的多个字段在 C++生成器 6 中不起作用
- 井字游戏不起作用
- 为什么客户端/服务器机制(使用套接字)不起作用?
- 非本地 IP 的套接字侦听器不起作用
- MS Windows套接字示例对我不起作用
- 通过套接字发送数据不起作用
- 我的井字游戏的吸气机和二传手功能不起作用
- 我只需要从文件中提取每条记录的一个字段,但它不起作用
- Boost assign list_of对双字面值不起作用
- 按索引或字段分配在C++中不起作用
- 套接字:客户端读取消息时多线程不起作用
- 连续两次读取套接字,第二次读取不起作用