【发布时间】:2017-09-05 05:14:19
【问题描述】:
Set 是一个排序关联容器,用于存储 Key 类型的对象。 Set 是一个简单的关联容器,意味着它的值类型,如 以及它的密钥类型,是Key。它也是一个独特的联想 容器,意味着没有两个元素是相同的。
我试图构建一个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。
【问题讨论】: