多维锯齿状地图
multidimensional jagged map
我是一个 c++ 菜鸟,试图构建一个实时跟踪我所有资产和负债的个人理财 websocket 服务器。
我发现我可以map
map
s拥有一个键值对的多维系统。
我还发现boost::any
和boost::variant
可用于存储值的多种类型。 我的问题是,与其他级别相比,某些级别不是很复杂。 例如,银行账户只有一个值,即账户中的金额,而经纪账户将具有多种类型的投资和特征,所以我想做一些类似的事情(在 json 中):
{
'bankAccount': 100.00,
'brokerageAccount': {
'stocks': {
'companyName': 'Stack Exchange',
'ticker': 'STAK',
'pps': bazillion
...
bankAccount
和brokerageAccount
可以在需要时insert
和erase
,并在必要时丢弃。
我真的不知道该何去何从。 当我尝试把
map<string, boost::any> accounts;
accounts["cash"] = 100;
accounts["brokerageAccount"] = map<string, boost::any>;
在此 WebSocket 服务器中broadcast_server
的private
部分中,使用这些标志gcc
-I ~/websocketpp-master/ -std=c++0x -D_WEBSOCKETPP_CPP11_STL_ -D_WEBSOCKETPP_NO_CPP11_REGEX_ -lboost_regex -lboost_system -L/usr/lib -pthread -O0 -ljson_spirit
为最后两行提供error: ‘accounts’ does not name a type
。
如何最好地以上面的 json 类型方式存储数据,并能够在任何地方添加和删除键和值?
accounts["brokerageAccount"] = map<string, boost::any>;
不能为对象指定类型。要解决问题,请添加 ()
accounts["brokerageAccount"] = map<string, boost::any>();
应该正确编译的变体是:
#include <boost/any.hpp>
#include <map>
#include <string>
int main()
{
std::map<std::string, boost::any> accounts;
accounts["cash"] = 100;
accounts["brokerageAccount"] = std::map<std::string, boost::any>();
}
最后一行的map<string, boost::any>
是一个类型,而不是该类型的对象。 您必须调用该类型的构造函数才能创建参数。 将最后一行更改为
accounts["brokerageAccount"] = map<string, boost::any>();
这在我的Visual Studio 2010副本上修复了它
- 为什么不;名字在地图上是按顺序排列的吗
- 基于多个条件处理地图中的所有元素
- 在C++中将矢量转换为嵌套地图
- 宽度为奇数的16位纹理为片状
- 替换基于地图的所有引用
- 如何区分地图中的 0 和 false?
- 地图计数确实很重要,或者只是检查是否存在
- 如何从地图中删除矢量对象
- 是否有任何C++功能可以对地图进行排序?
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 从锯齿状数组读取
- 问题创建和返回锯齿状阵列(错误std :: bad_array_new_length)
- SFML在Pong Clone(OS X)中进行一些锯齿状的性能
- c#中的c++锯齿状数组切片
- 多种类型的锯齿状阵列
- 直接X 11锯齿状边缘
- 类的锯齿状数组
- 如何在SWIG中将矢量的锯齿状C++向量转换为Python
- 多维锯齿状地图
- 平滑圆形面膜.去除锯齿状边缘