[STL VS C]不知道这个算STL链表等数据结构中的一个效率硬伤不?
先来推一个论点:
STL中只是对链表对象的一个包装,因为对用户是透明的,所以给用户展示的还是原来的结构。那么就意味着,链表信息无法原来的结构体中取得,如果要进行增,删,改,则必须进行查询找到链表节点
假设有结构
struct page
{
list head; //如果是C,以linux下的链表使用方法为代表,直接将信息作为结构体的一个成员变量
};
接着将page串成链表
C中,list_add_tail(). C中是以数据结构和操作方法分开,典型的过程式写法
C++中,list<page*> List; List.push(); 类的思维写法,一个对象包括代码和数据
当我要进行删除的时候
void *p; //我的内存地址
pPage = virt_to_head_page(p); //反算出page
C中,list_del(pPage);//直接删除,因为本身就有结点信息
C++中,List.删除(pPage); //我的做法是,先find到itr,然后erase.如果是remove,好象是一个遍历
也可能是我list用得不对,还请大家指教