我有我的 C 列表,我实现了这个push_back
功能:
bool_t push_back_clist(clist_ptr pList, void* item)
{
if(pList)
{
node_ptr pNode = new_node(item, pList->sizeof_item);
if(!pNode) return FALSE;
if(!pList->head)
pList->head = pList->tail = pNode;
else
{
pList->tail->next = pNode;
pNode->prev = pList->tail;
pList->tail = pNode;
}
pList->size++;
return TRUE;
}
return FALSE;
}
static node_ptr new_node(void* data, size_t sizeof_item)
{
node_ptr pNode = (node_ptr) malloc(sizeof(node_t));
if(!pNode) return NULL;
pNode->data = malloc(sizeof_item);
if(!pNode->data)
{
free(pNode);
return NULL;
}
memcpy(pNode->data, data, sizeof_item);
pNode->next = pNode->prev = NULL;
return pNode;
}
它有效,但是当我将我的push_back_clist
函数与std::list.push_back
方法进行比较时,我注意到我的函数需要大约两倍的时间。为什么?我怎样才能提高我的功能的性能?谢谢。