gpt4 book ai didi

c++ - std::tuple 和 std::map 的效率

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:15 25 4
gpt4 key购买 nike

我目前正在构建一个程序,该程序依赖于多个 vector 和映射来保留之前计算的信息。我的 vector 是标准格式,不是很有趣。 map 的形式是

std::map<std::string, long double> 

字符串的意图是一个 vector 到另一个 vector 的可解析映射,例如

std::map<std::string, long double> rmMap("fvProperty --> fvTime", 3.0234);

稍后我可以在这里拆分字符串并将子字符串与 vector 名称进行比较,以找出获取数字所涉及的子字符串。但是,我最近发现 std::tuple 可用,这意味着我可以完全跳过字符串并使用 vector 位置代替

std::tuple<unsigned int, unsigned int, long double>

这允许我(据我所知)使用第一个和第二个值作为键,这似乎比为我的索引解析字符串更可取。

我的症结是我没有意识到这里的效率。将多次调用这些元组/映射,效率至关重要,因为该程序预计会运行数周才能产生最终结果。

因此,我想问你,当涉及到大型和计算密集型程序时,元组是否比映射更有效(在内存、缓存和周期方面)?

编辑:如果不能以这种方式使用元组,那么映射

std::map<std::pair<unsigned int, unsigned int>, long double>

是使用字符串进行识别的有效替代品吗?

最佳答案

映射的优点是可以高效地查询与键关联的数据。

它不能与仅将值打包在一起的元组进行比较:您必须自己遍历元组以检索正确的值。

使用 map<pair<unsigned int, unsigned int>, long double>正如迈克所建议的那样可能是要走的路。

关于c++ - std::tuple 和 std::map 的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20147710/

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