1 Introduction #
2 Signature #
// type1. element의 operator< 연산자에 따라 소팅
void sort ( );// type2. 전달되는 comp에 따라 소팅
template <class Compare>
void sort ( Compare comp );
//
// type1. element의 operator< 연산자에 따라 소팅
void sort();// type2. struct std::greater<T>를 구현해서
// 넘겨줘야 한다.usage 3 참고
template<class Pred>
void sort(greater<T> pr);
//
3 Usage 1: sort() #
#include <list>
#include <string>
#include <iostream>class MyData
{
// 편의상 public으로
public:
int m_nId;
std::string m_strName;public:
// operator< 재 정의 sort에서 사용 됨
bool operator<(const MyData& other)
{
if( m_nId < other.m_nId)
return true;
else
return false;
};// constructor
MyData(int nId, std::string strName)
{
m_nId = nId;
m_strName = strName;
};
};void main()
{
std::list<MyData> dataList;// elements 채우기
dataList.push_back( MyData(100, “alones1″));
dataList.push_back( MyData(50, “alones2″));
dataList.push_back( MyData(16, “alones3″));
dataList.push_back( MyData(58, “alones4″));// 소팅: MyData::operator< 을 이용
dataList.sort();std::list<MyData>::iterator it = dataList.begin();
// 결과 출력 id에 따라 오름 차순으로 정렬
while( it != dataList.end())
{
std::cout<<“id: “<<(*it).m_nId
<<” name: “<<(*it).m_strName<<std::endl;++it;
}
}
//
#include <list>
#include <string>
#include <iostream>class MyData
{
// 편의상 public으로
public:
int m_nId;
std::string m_strName;public:
// operator< 재 정의 sort에서 사용 됨
bool operator<(const MyData& other)
{
if( m_nId < other.m_nId)
return true;
else
return false;
};// constructor
MyData(int nId, std::string strName)
{
m_nId = nId;
m_strName = strName;
};MyData(){};
};bool Comp(MyData first, MyData second)
{
if( first.m_nId < second.m_nId)
return true;
else
return false;
}void main()
{
std::list<MyData> dataList;// elements 채우기
dataList.push_back( MyData(100, “alones1″));
dataList.push_back( MyData(50, “alones2″));
dataList.push_back( MyData(16, “alones3″));
dataList.push_back( MyData(58, “alones4″));// 소팅 (Comp를 사용했다)
dataList.sort(Comp);std::list<MyData>::iterator it = dataList.begin();
// 결과 출력 id에 따라 오름 차순으로 정렬
while( it != dataList.end())
{
std::cout<<“id: “<<(*it).m_nId
<<” name: “<<(*it).m_strName<<std::endl;++it;
}
}
//
5 Usage 3: sort(greater<T> pr) #
#include <list>
#include <string>
#include <iostream>class MyData
{
// 편의상 public으로
public:
int m_nId;
std::string m_strName;public:
// operator< 재 정의 sort에서 사용 됨
bool operator<(const MyData& other)
{
if( m_nId < other.m_nId)
return true;
else
return false;
};// constructor
MyData(int nId, std::string strName)
{
m_nId = nId;
m_strName = strName;
};MyData(){};
};// VC6.0에서는 greater를 구현
struct std::greater<class MyData>
{
bool operator()(const MyData& first, const MyData& second)
{
return first.m_nId < second.m_nId;
}
};void main()
{
std::list<MyData> dataList;// elements 채우기
dataList.push_back( MyData(100, “alones1″));
dataList.push_back( MyData(50, “alones2″));
dataList.push_back( MyData(16, “alones3″));
dataList.push_back( MyData(58, “alones4″));// 소팅 (std::greater 사용)
std::greater<MyData> a;
dataList.sort(a);std::list<MyData>::iterator it = dataList.begin();
// 결과 출력 id에 따라 오름 차순으로 정렬
while( it != dataList.end())
{
std::cout<<“id: “<<(*it).m_nId
<<” name: “<<(*it).m_strName<<std::endl;++it;
}
}
//
'Programing > C/C++' 카테고리의 다른 글
char 형 -> int 형으로 전환하기 (0) | 2013.04.29 |
---|---|
[list] list 모두 삭제하기 (0) | 2013.04.22 |
[list 복사] list의 모든 데이터를 다른 list로 복사 (0) | 2013.04.22 |
C++ 출력 정렬하기(setw, seft, setprecision) (0) | 2013.04.22 |
C++ char <-> string 변환하기 (0) | 2013.04.07 |