gpt4 book ai didi

c++ - 由于速度原因使用std vector作为map,靠谱吗?

转载 作者:行者123 更新时间:2023-11-30 05:25:33 36 4
gpt4 key购买 nike

<分区>

对于我的嵌入式项目,我使用了 unordered_map以十六进制值作为键和 uint32_t作为值(value)观。然而,它们非常的成本很高,而且一些基准测试表明使用 vector 要快得多。 (在仅持续 50us 的中断期间,10us 与 1us)

由于键仅用于对值进行排序和提高可读性,因此除了易用性之外,我没有发现 unordered_map 有任何好处。 .

但是,我想知道这样做是否靠谱。从某种意义上说,在插入操作以将 2 个 vector 合并在一起之后,我会丢失数据和/或排序吗?我的 vector 看起来像这样:std::vector<uint32_t>索引总是不同的

使用 vector 的另一个缺点是我必须用所需的位置预先初始化 vector ,这限制了这种方法的灵 active 。

// The PARAM_ values are indeces in HEX
dataMapA.insert(dataMapA.begin() + PARAM_MOTOR_ANGLE, 0);
dataMapA.insert(dataMapA.begin() + PARAM_MOTOR_VELOCITY, 0);
dataMapA.insert(dataMapA.begin() + PARAM_JOINT_ANGLE, 0);
dataMapA.insert(dataMapA.begin() + PARAM_SPRING_ANGLE, 0);

如果我不执行上述操作,我将无法存储任何值。

以下可能是一个解决方案,但在定义为私有(private)/公共(public)成员时似乎不起作用。 Eclipse 抛出语法错误。

std::vector<uint32_t> dataMapA(10);

所以我想这个问题可以概括为如何将 vector 用作键值查找表并使其尽可能高效,同时仍保持一定的可读性。

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