定义:
typedef struct TAGFD_RECORDINFO
{
xxx
}TFD_RECORDINFO, *PTFD_RECORDINFO;
std::list<PTFD_RECORDINFO> m_ListRecordInfo;
添加
m_ListRecordInfo.push_back( ptRecordInfo );
删除:
PTFD_RECORDINFO ptRecordInfo;
if( m_ListRecordInfo.size() > 0 )
{
list<PTFD_RECORDINFO>::iterator iter;
iter = m_ListRecordInfo.begin();
if( *iter )
{
ptRecordInfo = *iter;
delete ptRecordInfo;
ptRecordInfo = NULL;
}
m_ListRecordInfo.pop_front();
}
销毁:
PTFD_RECORDINFO ptRecordInfo;
if( m_ListRecordInfo.size() > 0 )
{
list<PTFD_RECORDINFO>::iterator iter;
for( iter = m_ListRecordInfo.begin(); iter != m_ListRecordInfo.end(); iter++ )
{
if( *iter )
{
ptRecordInfo = *iter;
delete ptRecordInfo;
ptRecordInfo = NULL;
}
}
}
排序 sort
Arranges the elements of a list in ascending order or with respect to some other user-specified order relation.
void sort();
template<class pred>
void sort(Pred pr);
这两个成员函数都会按下面所描述的谓词来对被控序列中的元素排序。
假设迭代器Pi指向位于位置i处的元素,Pj指向位于位置j处的元素,当i<j时,第一个成员函数要求!(*Pj<*Pi)为true。(即元素是以生序排序的。)模板成员函数要求当i<j时,!pr(*Pj,*Pi)为true。最初被控序列中排序好的元素对在结果序列中的位置关系不会改变(即排序是稳定的)。
仅有在pr抛出异常时这两个成员函数才 会有异常发生。在这种情况下,被控序列将处于一个未指定的排序状态下,而异常则继续向外抛出。
const_iterator和const iterator
前一个是标准库定义好的,一个是你自己定义的.通过简单的代码区别,更能说明问题,希望你能明白
vector<int> ivec;
vector<int>::const_iterator citer1 = ivec.begin();
const vector<int>::iterator citer2 = ivec.begin();
*citer1 = 1; //error *citer2 = 1; //right ++citer1; //right ++citer2; //error