代码如下:
// Set.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<set>
#include<algorithm>//求交集合集需要此头文件
using namespace std;
//自定义结构,参考来自:http://www.cnblogs.com/malloc/archive/2012/03/13/2394719.html
class MyType
{
public:
int a, b, c;
MyType(int a1, int b1, int c1) :a(a1), b(b1), c(c1){}
bool operator<(const MyType& myType) const
{
return a<myType.a ? true : (b<myType.b ? true : c<myType.c);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << "set 的一些简单使用 : " << endl;
set<int> s;
for (size_t i = 0; i < 10; i++)
{
s.insert(i);
}
std::cout << "使用迭代器输出数据集合s为:" << endl;
for (set<int>::iterator it = s.begin(); it != s.end(); it++)
{
std::cout << *it << " ";
}
std::cout << endl;
std::cout << "使用c++11输出数据" << endl;;
for (auto s1 : s)
{
std::cout << s1 << " ";
}
std::cout << endl;
/*
pair<iterator, bool> insert(
const value_type& _Val
);
iterator insert(
iterator _Where,
const value_type& _Val
);
template<class InputIterator>
void insert(
InputIterator _First,
InputIterator _Last
);
template<class ValTy>
pair<iterator, bool> insert(
ValTy&& _Val
);
template<class ValTy>
iterator insert(
const_iterator _Where,
ValTy&& _Val
);
*/
std::cout << "下面是自定义数据 set的应用,参考来自:http://www.cnblogs.com/malloc/archive/2012/03/13/2394719.html" << endl;
set<MyType> se;
MyType type1(1, 2, 4);
MyType type2(1, 2, 3);
se.insert(type1);
se.insert(type2);
cout << "The set size:" << se.size() << endl;
for (auto s2 : se)
{
std::cout << s2.a<< " "<<s2.b<<" "<<s2.c<<endl;
}
std::cout << endl;
//删除数据
/*
iterator erase(
iterator _Where
);
iterator erase(
iterator _First,
iterator _Last
);
size_type erase(
const key_type& _Key
);
*/
s.erase(2);
std::cout << "s集合删除键值为2后,数据为:" << endl;
for (auto s1 : s)
{
std::cout << s1 << " ";
}
std::cout << endl;
//查找数据,通用是使用find
std::cout << "在集合s中查找是否存在值为3" << endl;
if (s.find(3) == s.end())
{
std::cout << "set does't contain this value"<<endl;
}
else
{
std::cout << "set s contain this value" << endl;
}
//是否存在键为5的数据,在set中,返回值为0或者1,因为数据不可重复
std::cout << "是否存在键为5的数据:" << s.count(5) << endl;
return 0;
}
输出: