gpt4 book ai didi

c++ - 如何在 C++ 中创建具有非标准顺序的整数集?

转载 作者:行者123 更新时间:2023-11-30 00:53:29 27 4
gpt4 key购买 nike

在 C++03 中,我想创建一个 std::set 迭代时,一个整数首先出现,之后,我不在乎什么顺序,但我需要一个顺序来确保没有集合中的重复项。例如,如果我有一组年份,并且在迭代时我希望在所有其他年份之前处理 2010 年。

std::set<int> years;

// I do not know the set of years up front, so cannot just make a vector, plus
// there could potentially be duplicates of the same year inserted more than
// once, but it should only appear once in the resultant set.
years.insert(2000);
years.insert(2001);
years.insert(2010);
years.insert(2011);
years.insert(2013);

for (std::set<int>::iterator itr = years.begin(); itr != years.end(); ++itr) {
process_year(*itr);
}

基本上,我需要提供一个比较器,在运行时已知的某个年份(例如 2010 年)比所有其他年份都少,但其余年份是有序的,但没有任何必要的顺序,只是为了确保没有集合中的重复项。

最佳答案

struct Comparer
{
int val;
Comparer(int v):val(v) {}
bool operator()(int lhs, int rhs) const {
if (rhs == val) return false;
if (lhs == val) return true;
return lhs < rhs;
}
};

要创建基于 Comparer 排序的 std::set 实例:

std::set<int, Comparer> instance( Comparer(2010) );

关于c++ - 如何在 C++ 中创建具有非标准顺序的整数集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16220726/

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