gpt4 book ai didi

C++ 映射未正确插入

转载 作者:行者123 更新时间:2023-11-28 02:05:18 25 4
gpt4 key购买 nike

我正在尝试从以下结构填充 map :

struct CounterParty
{
uint8_t firm_id;
char trader_tag[3];
uint32_t qty;
};
struct OrderFillMessage
{
Header header;
uint32_t order_id;
uint64_t fill_price;
uint32_t fill_qty;
uint8_t no_of_contras;
std::vector<CounterParty> CounterPartyGroup;
char termination_string[8];
};

void TradeDecoder::findMostActiveTrader()
{
map<char*,int> traders_volume_map;
for(OrderFillMessage m: OrderFillMessages)
{
for(CounterParty cp: m.CounterPartyGroup)
{
outputfile<<cp.trader_tag<<" "<<cp.qty<<endl;
traders_volume_map[cp.trader_tag]+=cp.qty;
}
}
outputFileTrader<<"PRINTING MAP "<<traders_volume_map.size()<<"\n";
for(auto it=traders_volume_map.begin(); it!=traders_volume_map.end(); it++)
{
outputFileTrader<<(it)->first<<(it)->second<<endl;
}
}

如您所见,它只是一个简单的插入或更新 map 功能。

outputfile<<cp.trader_tag<<" "<<cp.qty<<endl;

打印以下内容:

IYH 2
HTC 1
IYH 2
HTC 1
IYH 2
HTC 1
IYH 1
HTC 1
IYH 1
HTC 1
IYH 1
HTC 1
IYH 1
HTC 1
IYH 1

但是outputFileTrader<<"PRINTING MAP "<<traders_volume_map.size()<<"\n";打印:

PRINTING MAP 1
HTC3050

这意味着什么都没有添加到 map 中,即使 map 中只有 1 个元素,也能找到所有内容!?

任何有关为什么会发生这种情况的见解将不胜感激!!

虽然我认为这不会导致 map 查找问题,但我想补充一点 trader_tag不是空终止 char[3] .

最佳答案

您正在使用 char * 作为 key 。这是一个坏主意,因为这会有很大差异。

使用以下内容

map<std::string, int> traders_volume_map;

克服这个问题。

关于C++ 映射未正确插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760244/

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