gpt4 book ai didi

C++ 容器集 + 数组功能

转载 作者:太空狗 更新时间:2023-10-29 20:23:41 25 4
gpt4 key购买 nike

哪个是 C++ 中最好的容器,它可以 -

  • 仅存储唯一值(例如set)
  • 可以在恒定时间内使用索引查找那些值(例如array)

我基本上需要在第一阶段进行迭代并收集所有 unique 元素,顺序真的无关紧要。

但是在第二阶段,我必须提供容器中的每个元素,但只能一个一个提供。由于调用者可以知道我的容器的大小,它会一个一个地为我提供 index,这样 0 < idx < 容器的大小。

目前,我想到的唯一解决方案是两个维护两个容器 vectorset,我想知道是否有任何容器提供相同的?

class MyContainer{
private:
std::set<Fruits> setFruits;
std::vector<Fruits> arrFruits; // can have indexed access

public:
void collectFruits(const Fruits& fruit){
if(setFruits.find(fruit) == setFruits.end()){
// insert only if it doens't contains
setFruits.insert(fruit);
arrFruits.push_back(fruit);
}
}
};

最佳答案

STL 的创建者 Alex Stepanov 曾经说过“尽可能使用 vector 。如果不能使用 vector ,请重新设计解决方案,以便可以使用 vector 。”记住这个好建议:

阶段 1:收集独特元素

std::vector<Foo> elements;

// add N elements
elements.push_back(foo1);
...
elements.push_back(fooN);

// done collecting: remove dupes
std::sort(elements.begin(), elements.end());
elements.erase(std::unique(elements.begin(), elements.end()),
elements.end());

阶段 2:好吧,现在我们有了 k 唯一元素的 vector,具有恒定时间索引访问(索引 0..k-1)。

关于C++ 容器集 + 数组功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31821049/

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