List介绍:
List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。
示例代码1:
#include <list>
#include <stdio.h>
using namespace std;
int main(void)
{
list<int> myList;
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
list<int>::iterator iter;
for (iter = myList.begin(); iter != myList.end(); iter++)
{
printf("%d\n", *iter);
}
return 0;
}
示例代码2:
using namespace std;
typedef struct logFilter
{
char keyword[64];
}logFilter_t;
void extractLogKeyword(char *szUploadFilter, list<logFilter_t> *pUploadKeywordList, list<logFilter_t> *pNotUploadKeywordList)
{
int readLen;
logFilter_t tmpStBuf;
char *point = NULL;
char *pszUploadFilter = szUploadFilter;
//printf("%s\n\n", pszUploadFilter);
while(pszUploadFilter[0] == '^')
{
memset(tmpStBuf.keyword, 0, sizeof(tmpStBuf.keyword));
if(pszUploadFilter[1] == '~')
{
pszUploadFilter += 2;
point = strstr(pszUploadFilter, "^");
if(point != NULL)
{
readLen = point - pszUploadFilter;
memcpy(tmpStBuf.keyword, pszUploadFilter, readLen);
pszUploadFilter = point;
if(readLen > 0)
pNotUploadKeywordList->push_back(tmpStBuf);
}
else
{
memcpy(tmpStBuf.keyword, pszUploadFilter, strlen(pszUploadFilter));
pNotUploadKeywordList->push_back(tmpStBuf);
break;
}
}
else
{
pszUploadFilter += 1;
point = strstr(pszUploadFilter, "^");
if(point != NULL)
{
readLen = point - pszUploadFilter;
memcpy(tmpStBuf.keyword, pszUploadFilter, readLen);
pszUploadFilter = point;
if(readLen > 0)
pUploadKeywordList->push_back(tmpStBuf);
}
else
{
memcpy(tmpStBuf.keyword, pszUploadFilter, strlen(pszUploadFilter));
if(strlen(pszUploadFilter) > 0)
pUploadKeywordList->push_back(tmpStBuf);
break;
}
}
}
}
int main(void)
{
list<logFilter_t> pUploadKeywordList;
list<logFilter_t> pNotUploadKeywordList;
char buf[256] = "^~normalLog^~camStatus";
if(buf[0] != '^' || strlen(buf) == 1)
printf("invalid\n");
extractLogKeyword(buf, &pUploadKeywordList, &pNotUploadKeywordList);
list<logFilter_t>::iterator iter;
for (iter = pUploadKeywordList.begin(); iter != pUploadKeywordList.end(); iter++)
{
printf("upload : %s\n", iter->keyword);
}
for (iter = pNotUploadKeywordList.begin(); iter != pNotUploadKeywordList.end(); iter++)
{
printf("notUpload : %s\n", iter->keyword);
}
return 0;
}