C++中list简单用法
2018-02-27 09:36
260 查看
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;
}
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;
}
相关文章推荐
- C++:::List 用法简单介绍 (杂)
- C++之STL的list用法总结
- c++ stringstream 简单用法
- [G+smo]C++开源矩阵计算工具——Eigen的简单用法
- List中FindAll用法的一些简单示例并与where的区别
- C++STL之list用法总结
- C++ List的用法
- c++ list, vector, map, set 区别与用法比较
- 关于Arrays和LinkedList的简单用法
- C++ list, vector, map, set 区别与用法比较
- 【新手向】C++中const的用法总结,超级简单的,看不懂的话………………………………………………我再给你讲一遍
- C和C++中static用法简单总结
- c++中的list用法[转]
- C# IList, ArrayList与List的区别详解 & 简单用法举例
- [转载]C++中list的用法
- Eigen: C++开源矩阵计算工具——Eigen的简单用法
- (STL) list的简单用法和实现
- c++List用法
- C++ vector 的简单用法
- java中的集合框架LinkedList 简单用法