请问上面一个STL的有关问题

请教下面一个STL的问题
我现在想扫描一些数据对,每对有三个元素。假设,这种数据对的结构是
int key, int va1, int va2
其中靠key值来进行排序。
比如现在扫描的数据对有<10,1,2><11,2,3><11,3,4><18,5,6><10,1,2>
我现在想找种结构存储起来,来达到这样的效果:
数据对的三个值必须完全相同时才判为重复对,也就是说上面的重复的对只有<10,1,2>这一个。
我想用set<pair<int, pair<int, int> > >这种结构存储,但是感觉这样太麻烦了,不管效率如何。
如果用map的话,那么像<11,2,3><11,3,4>这两个用11作为键值来排序的话肯定有其中一个被剔除了。
如果用multimap的话,那么有两个<10,1,2>,就会出现重复的情况,我现在不想重复。
请问我该如果做呢,求解


------解决方案--------------------
定义一个结构体 A 存 key,va1,va2,实现 bool operate < (A& a) const
然后,用set<A>

------解决方案--------------------
不想使用复杂的,那就只有使用其它数据结构了, 比如自定义一个数据结构,然后使用stl相关类的查找函数, 当然,要重载相关的操作符.
------解决方案--------------------
map<int, pair<int, int>>不就得啦?
------解决方案--------------------
楼主的编译器支持TR1吗??可以考虑使用Tuple

------解决方案--------------------
map和set使用一样的数据结构,效率上应该差不多。建议使用set ,定义一个结构体,定义好比较操作符。
------解决方案--------------------
定义一个结构体,然后重载比较操作符。

如果仅仅是遍历比较的话,建议用vector就行了。
------解决方案--------------------
我替他写吧。没上机调试,仅供参考。
class A
{
public:
int key,va1,va2;
public:
bool operator <( const A & a )const;
}
bool A::operator<( const A & a )const
{
if( key == a.key )
{
return( (va1 == a.va1) ? (va2 < a.va2) :( va1 < a.va1 ));
}
else return( key < a.key );
}