gpt4 book ai didi

C++标准模板库 vector 题

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:04 30 4
gpt4 key购买 nike

谁能用英文解释一下这是怎么回事?

std::vector<Cat*> cats; //I get that cats is a vector of Cat objects

if (std::find(cats.begin(), cats.end(), morris) == cats.end()) {
cats.push_back(morris);
}

最佳答案

@mlimber 已经给出了一种解释。

我会以不同的方式解释它。用简单的英语来说,这是一种非常简单的方法:

 std::set<Cat> cats;

cats.insert(morris);

并使其变慢(线性而不是对数)并且更难阅读或理解。

编辑:公平地说,我想我应该补充一点,可能想要做这样的事情有几个原因。例如,如果您确实需要知道将 Cat 添加到集合中的顺序,保留原始顺序可能有一定意义。同样,如果您通常以受益于它们在内存中连续的方式使用集合,并且只是很少添加新项目,则可能更有意义将数据存储在 vector 而不是 set 中。

但是,

set 的设计目的是完全这里正在做的事情,因此 set 是显而易见的选择(没有令人信服的理由使用在您显示的内容中不可见的 vector

关于C++标准模板库 vector 题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185330/

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