【发布时间】:2016-03-06 05:00:06
【问题描述】:
所以我对 c++ 还很陌生,我对如何在存储 pair 项目的集合上实现 find() 函数有点困惑。我已经阅读了如何按对插入和删除项目,但对任何人解释如何使用find(或其他方法,如果有的话)通过对的第一个项目查找值的人来说都是干巴巴的。
set<pair<string, CustomObject>> *items = new set<pair<string, CustomObject>>();
然后假设我在集合中插入了几对,然后我想通过搜索存储为该对中第一项的“密钥”来找到其中一对。我认为这将涉及在这对上调用.first,但我只是遇到了麻烦。这是我试图实现的基本功能
bool inSet(string key){
return this->items->find(pair<string, CustomObject>(key, null).first)
}
我能够在地图对象中很好地实现所有内容,但后来我不得不切换到一个集合,因为我希望能够对数据结构中的项目进行排序,但有人告诉我你不能在一个地图,因此是集合。
【问题讨论】:
-
你应该使用 map 而不是 set。
-
(1)
new是不必要的。根本不使用指针。 (2) 您似乎想要std::map或std::unordered_map,而不是std::set。 (3) 无论如何,请注意std:.set通常会做很多工作,以便为您提供有序的项目序列,而您通常不需要这些,因此默认情况下,如果需要通用集合,请使用unordered_set. -
@Mox 和@Cheers,我可以使用地图,但如何根据其价值对其进行排序?
map<string, CustomObject > *items = new map<string, CustomObject >();。这就是最初把我带到这里的问题 -
map 中的所有内容在插入过程中都会进行排序。地图本质上是平衡的二叉搜索树,用于动态排序。
标签: c++ sorting dictionary set