当您尝试在插入之前确定地图中的一个密钥是否导致查找的费用,如果它不成功,则定位插入点的成本相同.您可以通过使用std :: map :: insert来返回一个与迭代器和一个布尔的对话框来告诉您插入是否实际发生或元素已经存在的额外成本.
除此之外,您需要了解比较键的成本是多少,这不是问题所在(MyStruct只能容纳一个或一千个),这是您需要考虑的因素.
最后,地图可能不是您需要的最有效的数据结构,您可能需要考虑使用预期定时插入的std :: unordered_map(哈希表)(如果哈希函数是不可怕),或者对于小型数据集,即使是可以使用二进制搜索来定位元素的简单有序数组(或std :: vector)(这将减少分配次数,代价是更昂贵的插入,但如果持有的类型足够小,可能值得)
一如往常的表现,衡量,然后尝试了解时间花在哪里.另请注意,根据您的应用程序,在特定功能或数据结构中花费的10%的时间可能很多或几乎没有.例如,如果您的应用程序只是执行查找和插入数据集,并且只需要10%的cpu,您就可以在其他地方进行优化.
总结以上是内存溢出为你收集整理的c – stl地图演出?全部内容,希望文章能够帮你解决c – stl地图演出?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)