Set是一个Sorted Associative Container,它存储Key类型的对象。 Set是一个简单关联容器,意思是它的值类型 及其关键类型是Key。这也是一个独特的联合容器,这意味着没有两个元素是相同的。无法使用对<int, int>作为C++中的键集STL
我试图建立一个set<pair<int, int>>
与数字和它出现在字符串中的位置作为key
。
当试图插入pair<int, int>
作为set
的密钥时,当该对的第一个元素再次出现,虽然pair
是唯一的,但插入未成功。
#include <iostream>
#include <set>
#include <iterator>
using namespace std;
struct compare
{
bool operator()(const pair<int, int> &lhs, const pair<int, int> &rhs)
{
return lhs.first > rhs.first;
}
};
void print(set<pair<int, int>, compare> myset)
{
for(auto iter=myset.begin(); iter!=myset.end();++iter){
cout << iter->first << ' ' << iter->second << endl;
}
}
void BuildSet(int num)
{
set<pair<int, int>, compare> values;
string number = to_string(num);
for(int i=0; i<number.size(); ++i)
{
int quot = number[i]-'0';
values.insert(make_pair(quot, i));
}
cout << endl;
print(values);
cout << endl;
}
int main() {
BuildSet(98738);
}
输出功率为:
9 0
8 1
7 2
3 3
随着失踪作为第一要素的进入8 4
正在复制。
是的,你可以这样做。或者只是使用'std :: greater>' –
StoryTeller
@StoryTeller是的,这将是干净的做法。我添加了这个,以防任何人遇到写他们自己的“比较”方法。 – thebenman
或者只是'lhs> rhs;' – juanchopanza