难以定义股票股息图

Having trouble defining a map for stock dividends

本文关键字:定义      更新时间:2023-10-16

我正在尝试编写一些代码来计算股息收益率。我需要每天计算股息收益率(股息/股票价格)。股息是不变的。最终,我将不得不将股价与动态提要联系起来,但与此同时,股价可能会在自己的地图上。我在类构造函数中插入了每只股票的股息金额,因为与在成员中使用条件语句相比,这在计算上不那么麻烦(即,如果股票=苹果,那么股息是X)。我在"AAPL"之前的"["处收到以下错误消息:

**error C2679: binary '[' : no operator found which takes a right-hand operand of type 'const 
char [5]' (or there is no acceptable conversion) c:boost/unordered/unordered_map.hpp(415):  
could be 'double  &boost::unordered_map<K,T>::operator [](const FinModels::Instrument *const &)'
with 
     [
          K=const FinModels::Instrument *,
          T=double
      ]
      while trying to match the argument list '(DividendMap, const char [5])'**

有人能根据我下面的简短代码和描述帮助我吗?键的const Symbol*类型是否不正确?

此外,如果在构造函数中发布固定的映射值是不好的约定,请告诉我什么更好。

头文件

public:
typedef boost::unordered_map<const Symbol*, double> Dividend_Map;
typedef Dividend_Map::iterator Dividend_MapIterator;
private:
Dividend_Map p_dividend_map;

.CPP文件

p_dividend_map["AAPL"] = 0.01;
p_dividend_map["BAC"] = 0.01;
p_dividend_map["C"] = 0.01;

映射的键类型是Symbol *,您正试图将一堆const char *粘贴到映射中。除非Symboltypedef’d作为char,否则这将不起作用。

从要存储在地图中的每个符号中创建一个Symbol对象,然后将其地址添加到地图中。

Symbol appl("AAPL"); // assuming Symbol has a constructor taking a const char *
p_dividend_map[&appl] = 0.01;

在上面的示例中,aapl的生存期必须与其作为映射成员的生存期相匹配。如果aapl的生存期到期,则映射将指向无效的内存位置。

您可能想将地图更改为

typedef boost::unordered_map<Symbol, double> Dividend_Map;

然后将其用作

Symbol appl("AAPL");
p_dividend_map[appl] = 0.01;