gpt4 book ai didi

c++ - 检测插入到 std::set 中的坏项

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:31 24 4
gpt4 key购买 nike

假设我在我的集​​合中有一个自定义类型,并且只有当所有项目在某个属性上具有相同的值时,设置/排序才有意义...如果插入具有不同值的项目,模型就会搞砸,我想要保护这个。

我认为比较函数可能是我们可以测试它(作为断言或异常)以标记问题和/或防止插入项目的地方。例如,在 TypeName 上,如果重要属性不相等,则 operator<() 始终返回 false。

这合理吗?

最佳答案

我想将它放在比较器中可能会出现问题,因为您无法保证何时调用它。也许某些神话般的实现在项目数量很少时将项目存储在列表中并且直到稍后才调用比较器?

可能最简单的方法是将 std::set 包装在执行这些断言的保护性外部类中。

class MySet {
private:
std::set<myFunkyType> myType;

public:
void insert(myFunkyType type) {
assert(!type.isFunky(), "funk violation");
// and so on
}

// all other members other than insertion or mutation just delegate to the
// underlying set

关于c++ - 检测插入到 std::set 中的坏项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7526217/

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