MFC如何清空CList中存储的所有元素

时间:2022-10-10 21:39:45
CList<CString,CString&> m_FileList;
m_FileList.RemoveAll()

貌似买有RemoveAll这个方法,莫非要遍历清空吗?

8 个解决方案

#1


有 RemoveAll 这个方法。

#2


可以RemoveAll();

#3


不用MS,本来就有

#5


大家认真一点。。。。CList 没有RemoveAll()啊

不过可以这样写
int n=m_list.GetCount();
for(int i=0;i<n;i++)
{
    m_list.RemoveAt(0);
}

#6


MFC 的源码。

template<class TYPE, class ARG_TYPE>
void CList<TYPE, ARG_TYPE>::RemoveAll()
{
    ASSERT_VALID(this);

    //destroy elements
    CNode* pNode;
    for (pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
        DestructElements<TYPE>(&pNode->data, 1);

    m_nCount = 0;
    m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
    m_pBlocks->FreeDataChain();
    m_pBlocks = NULL;
}

#7


引用 5 楼 FallingStar08 的回复:
大家认真一点。。。。CList 没有RemoveAll()啊 

不过可以这样写 
int n=m_list.GetCount(); 
for(int i=0;i <n;i++) 

    m_list.RemoveAt(0); 
大哥,你再仔细查查

#8


是有m_list.RemoveAt()
你没UpdateData()了~~~

#1


有 RemoveAll 这个方法。

#2


可以RemoveAll();

#3


不用MS,本来就有

#4


#5


大家认真一点。。。。CList 没有RemoveAll()啊

不过可以这样写
int n=m_list.GetCount();
for(int i=0;i<n;i++)
{
    m_list.RemoveAt(0);
}

#6


MFC 的源码。

template<class TYPE, class ARG_TYPE>
void CList<TYPE, ARG_TYPE>::RemoveAll()
{
    ASSERT_VALID(this);

    //destroy elements
    CNode* pNode;
    for (pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
        DestructElements<TYPE>(&pNode->data, 1);

    m_nCount = 0;
    m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
    m_pBlocks->FreeDataChain();
    m_pBlocks = NULL;
}

#7


引用 5 楼 FallingStar08 的回复:
大家认真一点。。。。CList 没有RemoveAll()啊 

不过可以这样写 
int n=m_list.GetCount(); 
for(int i=0;i <n;i++) 

    m_list.RemoveAt(0); 
大哥,你再仔细查查

#8


是有m_list.RemoveAt()
你没UpdateData()了~~~