玩命加载中 . . .

STL-list


list双向链表

#include <iostream>
#include <cstring>
#include <list>
using namespace std;

struct Contact
{
    string name;
    int num;
    Contact(const string& _name, const int& _num) {
        name = _name;
        num = _num;
    }
    // 需要重载"<"运算符,让list知道怎么排序
    bool operator < (const Contact& itemToCompare) const {
        return this->num < itemToCompare.num;
    }
};

// 自定义二元谓词函数实现自定义排序顺序
bool descending(const int& lsh, const int& rsh) {
    return lsh > rsh;
}

int main(int argc, char const *argv[])
{
    list<int> li = {12, 23};
    info(li);   
    // 12 23 

    li.push_back(100);  // 从尾部插入
    li.push_front(-1);  // 从头部插入
    info(li);   
    // -1 12 23 100

    li.insert(li.begin(), 2, 20);
    info(li);   
    // 20 20 -1 12 23 100 

    li.pop_back();  // 从尾部弹出
    li.pop_front(); // 从头部弹出
    info(li);
    // 20 -1 12 23 

    li.reverse();   // 翻转
    info(li);
    // 23 12 -1 20 

    li.sort();      // 默认是从小到大排序
    info(li);
    // -1 12 20 23 

    li.sort(descending);    // 自定义从大到小排序
    info(li);
    // 23 20 12 -1 

    Contact c1("kavin", 12);
    Contact c2("jack", 23);
    Contact c3("lisa", 34);
    list<Contact> contacts = {c1, c2, c3};
    contacts.sort();
    for (auto it : contacts) {
        it.info();
    }
    return 0;
}
name=kavin, num=12
name=jack, num=23
name=lisa, num=34

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录