华为手机叉车叉汽车会坏底盘吗坏了,怎么办?

&>&&>&&>&&>&C++实现快速查找文件 C++实现快速查找文件
C++实现快速查找文件 C++实现快速查找文件
上传大小:1.21MB
C++实现快速查找文件 C++实现快速查找文件C++实现快速查找文件 C++实现快速查找文件C++实现快速查找文件 C++实现快速查找文件
综合评分:3.8(28位用户评分)
所需积分:1
下载次数:107
审核通过送C币
创建者:wty1009
创建者:pizer
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
C++实现快速查找文件 C++实现快速查找文件
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:C-Language(9)
//1.列出一个文件夹
//2.列出该文件夹下的子文件夹的名称,文件的名称及大小。
#include &iostream&
#include &string&
#include &Windows.h&
//typedef struct _WIN32_FIND_DATA {
DWORD dwFileA //文件属性
FILETIME ftCreationT // 文件创建时间
FILETIME ftLastAccessT // 文件最后一次访问时间
FILETIME ftLastWriteT // 文件最后一次修改时间
DWORD nFileSizeH // 文件长度高32位
DWORD nFileSizeL // 文件长度低32位
DWORD dwReserved0; // 系统保留
DWORD dwReserved1; // 系统保留
TCHAR cFileName[ MAX_PATH ]; // 长文件名
TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
//递归遍历指定文件夹下的所有文件夹和文件
void DirectorySearch(const char *dirPath)
WIN32_FIND_DATAA lpFindFileD//这是windows定义的结构体。参见上面
//路径临时缓存,如果传进来的路径参数dirPath包含最后一个'\',则不做操作,否则加上'\'
char dirPathTemp[MAX_PATH];
//路径搜索通配符参数,在总路径后面加上*,匹配所有文件和文件夹
char dirCodeTemp[MAX_PATH];
strcpy_s(dirPathTemp, strlen(dirPath) + 1, dirPath);
strcpy_s(dirCodeTemp, strlen(dirPath) + 1, dirPath);
const char *pChar = strrchr(dirPath, '\\');
//如果\\在末尾存在
if(pChar != NULL && strlen(pChar) == 1)
strcat_s(dirCodeTemp, &*&);
strcat_s(dirCodeTemp, &\\*&);
strcat_s(dirPathTemp, &\\&);
//根据dirCodeTemp通配符查找路径
HANDLE handle = FindFirstFileA(dirCodeTemp, &lpFindFileData);
if(handle == INVALID_HANDLE_VALUE)
cout&&dirPathTemp&&&检索失败!&&&
//如果输的的是文件,则打印名字和大小
if((lpFindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
cout&&&文件名:&&&dirPathTemp&&&
大小:&&& lpFindFileData.nFileSizeHigh * (MAXDWORD+1) + lpFindFileData.nFileSizeLow&&
//如果输的的是文件夹,则打印名字
cout&&&文件夹名:&&&dirPathTemp&&
//遍历本路径下的文件夹和文件
while (FindNextFileA(handle, &lpFindFileData))
//如果是当前根路径,则无需检查(因为上面已经打印了)
if(!strcmp(lpFindFileData.cFileName, &.&) || !strcmp(lpFindFileData.cFileName, &..&))
//当前文件夹或文件的全路径(当前根路径 + 文件夹或文件的名称)
char dirFileTemp[MAX_PATH];
strcpy_s(dirFileTemp, strlen(dirPathTemp) + 1, dirPathTemp);
strcat_s(dirFileTemp, lpFindFileData.cFileName);
if((lpFindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
cout&&&文件名:&&&dirFileTemp&&&
大小:&&& lpFindFileData.nFileSizeHigh * (MAXDWORD+1) + lpFindFileData.nFileSizeLow&&
cout&&&文件夹名:&&&dirFileTemp&&
strcat_s(dirFileTemp, &\\&);
//递归检查此子文件夹
DirectorySearch(dirFileTemp);
//关闭文件搜索句柄
FindClose(handle);
int main()
char pathName[MAX_PATH];
cout&&&请输入目录:&&&
cin&&pathN
DiretorySearch(pathName);
system(&pause&);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:87736次
积分:2757
积分:2757
排名:第11170名
原创:184篇
转载:66篇
评论:11条
(1)(1)(2)(1)(1)(6)(5)(15)(14)(3)(11)(3)(17)(9)(2)(1)(19)(2)(1)(13)(16)(21)(19)(12)(14)(32)(11)(3)(1)如何用C++实现查找目录下的新增文件?比如说对于一个本地目录,每隔几秒钟扫描一次,查找是否有新增文件。用C++该怎么实现?谢谢!
回答1:记录下上次扫描的文件,这次多出来的,不在上次记录里的就是新增的了
回答2:FindFirstChangeNotificationFindNextChangeNotification
回答3:已发已发C++实现多线程查找文件实例
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了C++实现多线程查找文件实例,对于深入学习C++程序设计有着很好的参考借鉴价值,需要的朋友可以参考下
主要是多线程的互斥 文件 的查找
多线程互斥的框架
代码如下://线程函数&
UINT FinderEntry(LPVOID lpParam)&
&&& //CRapidFinder通过参数传递进来&&
&&& CRapidFinder* pFinder = (CRapidFinder*)lpP&
&&& CDirectoryNode* pNode = NULL;&
&&& BOOL bActive = TRUE; //bActive为TRUE,表示当前线程激活&
&&& //循环处理m_listDir列表中的目录&
&&& while (1)&
&&&&&&& //从列表中取出一个目录&
&&&&&&& ::EnterCriticalSection(&pFinder-&m_cs);&
&&&&&&& if (pFinder-&m_listDir.IsEmpty()) //目录列表为空,当前线程不激活,所以bAactive=FALSE&
&&&&&&& {&
&&&&&&&&&&& bActive = FALSE;&
&&&&&&& }&
&&&&&&& else&
&&&&&&& {&
&&&&&&&&&&& pNode = pFinder-&m_listDir.GetHead(); //得到一个目录&
&&&&&&&&&&& pFinder-&m_listDir.Remove(pNode);&&& //从目录列表中移除&
&&&&&&& }&
&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&& //如果停止当前线程&
&&&&&&& if (bActive == FALSE)&
&&&&&&& {&
&&&&&&&&&&& //停止当前线程&
&&&&&&&&&&& //线程数--&
&&&&&&&&&&& pFinder-&m_nThreadCount--;&
&&&&&&&&&&&&&
&&&&&&&&&&& //如果当前活动线程数为0,跳出,结束&
&&&&&&&&&&& if (pFinder-&m_nThreadCount == 0)&
&&&&&&&&&&& {&
&&&&&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&&&&&&&
&&&&&&&&&&& }&
&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&& //当前活动线程数不为0,等待其他线程向目录列表中加目录&
&&&&&&&&&&& ::ResetEvent(pFinder-&m_hDirEvent);&
&&&&&&&&&&& ::WaitForSingleObject(pFinder-&m_hDirEvent, INFINITE);&
&&&&&&&&&&& //运行到这,就说明其他线程唤醒了本线程&
&&&&&&&&&&&&&
&&&&&&&&&&& pFinder-&m_nThreadCount++; //激活了自己的线程,线程数++&
&&&&&&&&&&&&&
&&&&&&&&&&& bActive = TRUE; //当前线程活了&
&&&&&&&&&&& //跳到while,&
&&&&&&& }&
&&&&&&& //从目录列表中成功取得了目录&
&span style="white-space:pre"&&&&&& &/span&......................&
&&&&&&& //if (pNode)&
&&&&&&& //{&
&&&&&&& //& delete pN&
&&&&&&& //& pNode = NULL;&
&&&&&&& //}&
&&& }//end while&
&&& //促使一个搜索线程从WaitForSingleObject返回,并退出循环&
&&& ::SetEvent(pFinder-&m_hDirEvent);&
&&& //判断此线程是否是最后一个结束循环的线程,如果是就通知主线程&
&&& if (::WaitForSingleObject(pFinder-&m_hDirEvent,0) != WAIT_TIMEOUT)&
&&&&&&& ::SetEvent(pFinder-&m_hExitEvent);&
&&& return 1;&
查找文件 的框架:
代码如下://从目录列表中成功取得了目录&
WIN32_FIND_DATA fileD&
HANDLE hFindF&
//生成正确的查找字符串&
if (pNode-&szDir[strlen(pNode-&szDir)-1] != '\\')&
&&& strcat(pNode-&szDir,"\\");&
strcat(pNode-&szDir, "*.*");&
//查找文件的框架&
hFindFile = ::FindFirstFile(pNode-&szDir, &fileData);&
if (hFindFile != INVALID_HANDLE_VALUE )&
&//如果是当前目录,跳过&
&if (fileData.cFileName[0] == '.')&
&//如果是目录&
&if (fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&
&&&& //将当前目录加入到目录列表&
&&&& 。。。。。。&
&&&& //使一个线程从非活动状态变成活动状态&
&&&& ::SetEvent(pFinder-&m_hDirEvent);&
&else //如果是文件&
&&&& 。。。。。。。。。。。。。&
&&& } while (::FindNextFile(hFindFile, &fileData));&
所有代码main.cpp:
代码如下:#include "RapidFinder.h"&
#include &stddef.h&&
#include &stdio.h&&
#include &process.h&&
//m_nMaxThread 是const int类型,只能通过这种方式初始化&
CRapidFinder::CRapidFinder(int nMaxThread):m_nMaxThread(nMaxThread)&
&&& m_nResultCount = 0;&
&&& m_nThreadCount = 0;&
&&& m_listDir.Construct(offsetof(CDirectoryNode, pNext));& //offsetof在stddef.h头文件中&
&&& ::InitializeCriticalSection(&m_cs);&
&&& m_szMatchName[0] = '\0';&
&&& m_hDirEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);&
&&& m_hExitEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);&
CRapidFinder::~CRapidFinder()&
&&& ::DeleteCriticalSection(&m_cs);&
&&& ::CloseHandle(m_hDirEvent);&
&&& ::CloseHandle(m_hExitEvent);&
BOOL&&& CRapidFinder::CheckFile(LPCTSTR lpszFileName)&
&&& //定义两个字符串&
&&& char string[MAX_PATH];&
&&& char strSearch[MAX_PATH];&
&&& strcpy(string, lpszFileName);&
&&& strcpy(strSearch, m_szMatchName);&
&&& //将字符串大写&
&&& _strupr(string);&
&&& _strupr(strSearch);&
&&& //比较string中是否含有strSearch&
&&& if (strstr(string, strSearch) != NULL)&
&&&&&&& return TRUE;&
&&& return FALSE;&
//线程函数&
UINT FinderEntry(LPVOID lpParam)&
&&& //CRapidFinder通过参数传递进来&&
&&& CRapidFinder* pFinder = (CRapidFinder*)lpP&
&&& CDirectoryNode* pNode = NULL;&
&&& BOOL bActive = TRUE; //bActive为TRUE,表示当前线程激活&
&&& //循环处理m_listDir列表中的目录&
&&& while (1)&
&&&&&&& //从列表中取出一个目录&
&&&&&&& ::EnterCriticalSection(&pFinder-&m_cs);&
&&&&&&& if (pFinder-&m_listDir.IsEmpty()) //目录列表为空,当前线程不激活,所以bAactive=FALSE&
&&&&&&& {&
&&&&&&&&&&& bActive = FALSE;&
&&&&&&& }&
&&&&&&& else&
&&&&&&& {&
&&&&&&&&&&& pNode = pFinder-&m_listDir.GetHead(); //得到一个目录&
&&&&&&&&&&& pFinder-&m_listDir.Remove(pNode);&&& //从目录列表中移除&
&&&&&&& }&
&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&& //如果停止当前线程&
&&&&&&& if (bActive == FALSE)&
&&&&&&& {&
&&&&&&&&&&& //停止当前线程&
&&&&&&&&&&& ::EnterCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&& pFinder-&m_nThreadCount--;&
&&&&&&&&&&&&&
&&&&&&&&&&& //如果当前活动线程数为0,跳出,结束&
&&&&&&&&&&& if (pFinder-&m_nThreadCount == 0)&
&&&&&&&&&&& {&
&&&&&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&&&&&&&
&&&&&&&&&&& }&
&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&& //当前活动线程数不为0,等待其他线程向目录列表中加目录&
&&&&&&&&&&& ::ResetEvent(pFinder-&m_hDirEvent);&
&&&&&&&&&&& ::WaitForSingleObject(pFinder-&m_hDirEvent, INFINITE);&
&&&&&&&&&&& //运行到这,就说明其他线程向目录列表中加入了新的目录&
&&&&&&&&&&& ::EnterCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&& pFinder-&m_nThreadCount++; //激活了自己的线程,线程数++&
&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&& bActive = TRUE; //目录不再为空&
&&&&&&&&&&& //跳到while,重新在目录列表中取目录&
&&&&&&& }&
&&&&&&& //从目录列表中成功取得了目录&
&&&&&&& WIN32_FIND_DATA fileD&
&&&&&&& HANDLE hFindF&
&&&&&&& //生成正确的查找字符串&
&&&&&&& if (pNode-&szDir[strlen(pNode-&szDir)-1] != '\\')&
&&&&&&& {&
&&&&&&&&&&& strcat(pNode-&szDir,"\\");&
&&&&&&& }&
&&&&&&& strcat(pNode-&szDir, "*.*");&
&&&&&&& //查找文件的框架&
&&&&&&& hFindFile = ::FindFirstFile(pNode-&szDir, &fileData);&
&&&&&&& if (hFindFile != INVALID_HANDLE_VALUE )&
&&&&&&& {&
&&&&&&&&&&& do&&
&&&&&&&&&&& {&
&&&&&&&&&&&&&&& //如果是当前目录,跳过&
&&&&&&&&&&&&&&& if (fileData.cFileName[0] == '.')&
&&&&&&&&&&&&&&& {&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& //如果是目录&
&&&&&&&&&&&&&&& if (fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&
&&&&&&&&&&&&&&& {&
&&&&&&&&&&&&&&&&&&& //将当前目录加入到目录列表&
&&&&&&&&&&&&&&&&&&& CDirectoryNode* p = new CDirectoryN&
&&&&&&&&&&&&&&&&&&& strncpy(p-&szDir, pNode-&szDir, strlen(pNode-&szDir)-3); //将pNode后面的*.*三位去掉&
&&&&&&&&&&&&&&&&&&& strcat(p-&szDir, fileData.cFileName);&
&&&&&&&&&&&&&&&&&&& ::EnterCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&&&&&&&&&& pFinder-&m_listDir.AddHead(p);&
&&&&&&&&&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&&&&&&&&&& // 现在的p刚加入列表,就要delete,肯定会出错&
&&&&&&&&&&&&&&&&&&& //&
&&&&&&&&&&&&&&&&&&& //p = NULL;&
&&&&&&&&&&&&&&&&&&& //使一个线程从非活动状态变成活动状态&
&&&&&&&&&&&&&&&&&&& ::SetEvent(pFinder-&m_hDirEvent);&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& else //如果是文件&
&&&&&&&&&&&&&&& {&
&&&&&&&&&&&&&&&&&&& //判断是否为要查找的文件&&
&&&&&&&&&&&&&&&&&&& if (pFinder-&CheckFile(fileData.cFileName)) //符合查找的文件&&
&&&&&&&&&&&&&&&&&&& {&
&&&&&&&&&&&&&&&&&&&&&&& //打印&
&&&&&&&&&&&&&&&&&&&&&&& ::EnterCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&&&&&&&&&&&&&& pFinder-&m_nResultCount++;&
&&&&&&&&&&&&&&&&&&&&&&& ::LeaveCriticalSection(&pFinder-&m_cs);&
&&&&&&&&&&&&&&&&&&&&&&& printf("find %d:%s\n", pFinder-&m_nResultCount, fileData.cFileName);&
&&&&&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& } while (::FindNextFile(hFindFile, &fileData));&
&&&&&&& }&
&&&&&&& //if (pNode)&
&&&&&&& //{&
&&&&&&& //& delete pN&
&&&&&&& //& pNode = NULL;&
&&&&&&& //}&
&&& }//end while&
&&& //促使一个搜索线程从WaitForSingleObject返回,并退出循环&
&&& ::SetEvent(pFinder-&m_hDirEvent);&
&&& //判断此线程是否是最后一个结束循环的线程,如果是就通知主线程&
&&& if (::WaitForSingleObject(pFinder-&m_hDirEvent,0) != WAIT_TIMEOUT)&
&&&&&&& ::SetEvent(pFinder-&m_hExitEvent);&
&&& return 1;&
void&&& main()&
&&& printf("start:\n");&
&&& CRapidFinder* pFinder = new CRapidFinder(64);&
&&& CDirectoryNode* pNode = new CDirectoryN&
&&& char szPath[] = "c:\\";&
&&& char szFile[] = "config";&
&&& strcpy(pNode-&szDir, szPath);&
&&& pFinder-&m_listDir.AddHead(pNode);&
&&& strcpy(pFinder-&m_szMatchName, szFile);&
&&& pFinder-&m_nThreadCount = pFinder-&m_nMaxT&
&&& //开始开启多线程&
&&& for (int i=0;i& pFinder-&m_nMaxTi++)&
&&&&&&& ::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)FinderEntry, pFinder, 0, NULL);&
&&& //只有m_hExitEvent受信状态,主线程才恢复运行&
&&& ::WaitForSingleObject(pFinder-&m_hExitEvent,INFINITE);&
&&& printf("共找到%d\n", pFinder-&m_nResultCount);&
&&& //if (pNode != NULL) delete pN&
&&& if (pFinder != NULL) delete pF&
&&& getchar();&
rapidfinder.h文件如下:
代码如下:#include "_AFXTLS_.H"&
struct CDirectoryNode: public CNoTrackObject&
&&& CDirectoryNode* pN&
&&& char szDir[MAX_PATH];&
class CRapidFinder&
&&& CRapidFinder(int nMaxThread); //构造函数&
&&& virtual ~CRapidFinder();&&& //析构函数&
&&& BOOL&&& CheckFile(LPCTSTR lpszFileName); //检查lpszFileName是否符合查找条件&
&&& int&&&& m_nResultC //找到的结果数量&
&&& int&&&& m_nThreadC //当前的线程数量&
&&& CTypedSimpleList&CDirectoryNode*& m_listD //查找目录&
&&& CRITICAL_SECTION&&& m_&& //共享&
&&& const int&& m_nMaxT&& //最大线程数量&
&&& char&&& m_szMatchName[MAX_PATH]; //要查找的名称&
&&& HANDLE& m_hDirE&&& //添加新目录后置位&
&&& HANDLE& m_hExitE&& //所有线程退出时置位&
下面这两个类就是实现了simplelist类和模板
_afxatl.cpp文件:
代码如下:#include "_AFXTLS_.H"&
void CSimpleList::AddHead(void* p)&
&&& *GetNextPtr(p) = m_pH&
&&& m_pHead =&
BOOL CSimpleList::Remove(void* p)&
&&& if (p == NULL)&
&&&&&&& return FALSE;&
&&& BOOL bResult = FALSE;&
&&& if (p == m_pHead)&
&&&&&&& m_pHead = *GetNextPtr(m_pHead);&
&&&&&&& bResult = TRUE;&
&&&&&&& void* pTest = m_pH&
&&&&&&& while (pTest != NULL && *GetNextPtr(pTest) != p)&
&&&&&&& {&
&&&&&&&&&&& pTest = *GetNextPtr(pTest);&
&&&&&&& }&
&&&&&&& if (pTest != NULL)&
&&&&&&& {&
&&&&&&&&&&& *GetNextPtr(pTest) = *GetNextPtr(p);&
&&&&&&&&&&& bResult = TRUE;&
&&&&&&& }&
&&& return bR&
void* CNoTrackObject::operator new(size_t nSize)&
&&& void* p = ::GlobalAlloc(GPTR, nSize);&
&&& return&&
void CNoTrackObject::operator delete(void* p)&
&&& if (p!=NULL)&
&&&&&&& ::GlobalFree(p);&
afxatl.h文件:
代码如下:#ifndef _AFXTLS_H_H&
#define _AFXTLS_H_H&
#include &Windows.h&&
class CSimpleList&
&&& CSimpleList(int nNextOffset=0);&
&&& void Construct(int nNextOffset);&
&&& BOOL IsEmpty()&
&&& void AddHead(void* p);&
&&& void RemoveAll();&
&&& void* GetHead()&
&&& void* GetNext(void* p)&
&&& BOOL Remove(void* p);&
&&& //为实现接口所需要的成员&
&&& void* m_pH&
&&& int m_nNextO&
&&& void** GetNextPtr(void* p)&
//类的内联函数&
inline CSimpleList::CSimpleList(int nNextOffset)&
{m_pHead = NULL; m_nNextOffset = nNextO}&
inline void CSimpleList::Construct(int nNextOffset)&
{m_nNextOffset = nNextO}&
inline BOOL CSimpleList::IsEmpty() const&&&&&
{return m_pHead==NULL;}&
inline void CSimpleList::RemoveAll()&
{m_pHead=NULL;}&
inline void* CSimpleList::GetHead() const&
{return m_pH}&
inline void* CSimpleList::GetNext(void* preElement) const&
&&& return *GetNextPtr(preElement);&
inline void** CSimpleList::GetNextPtr(void* p) const&
&&& return (void**)((BYTE*)p + m_nNextOffset);&
class CNoTrackObject&
&&& void* operator new(size_t nSize);&
&&& void operator delete(void*);&
&&& virtual ~CNoTrackObject(){};&
template&class TYPE&&
class CTypedSimpleList:public CSimpleList&
&&& CTypedSimpleList(int nNextOffset=0)&
&&&&&&& :CSimpleList(nNextOffset){}&
&&& void AddHead(TYPE p)&
&&&&&&& CSimpleList::AddHead((void*)p);&
&&& TYPE GetHead()&
&&&&&&& return (TYPE)CSimpleList::GetHead();&
&&& TYPE GetNext(TYPE p)&
&&&&&&& return (TYPE)CSimpleList::GetNext((void*)p);&
&&& BOOL Remove(TYPE p)&
&&&&&&& return CSimpleList::Remove(p);&
&&& operator TYPE()&
&&&&&&& return (TYPE)CSimpleList::GetHead();&
希望本文所述对大家的C++程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 底盘装甲的坏处 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信