免费资源网,https://freexyz.cn/
目录
  • list容器merge算法的使用注意事项
    • (1) void merge(list &x)
    • (2) void merge(lst2,comp)
  • 总结

    list容器merge算法的使用注意事项

    C++的list容器merge算法有多种形式,这里仅讨论一下两种:

    C++ list容器merge算法的使用以及注意事项

    (1) void merge(list &x)

    该算法将一个有序list容器加入另一个有序list容器中,且两个list容器必须为逆序或顺序,这是很容易不注意导致报错的主要原因。

    list lst1{ 111,222,333,444 };//顺序
    list lst2{ 2411,4,3,2,1 };//逆序
    lst1.merge(lst2);
    for (auto beg = lst1.begin(); beg != lst1.end(); ++beg)
    cout << *beg << " ";
    cout << endl;

    C++ list容器merge算法的使用以及注意事项

    C++ list容器merge算法的使用以及注意事项

    (2) void merge(lst2,comp)

    该算法可以自定义比较类型,需要一个能返回bool型的predict。 

    bool mycomparison (double first, double second)
    { return ( int(first)<int(second) ); }
    
    int main ()
    {
    std::list first, second;
    
    first.push_back (3.1);
    first.push_back (2.2);
    first.push_back (2.9);
    
    second.push_back (3.7);
    second.push_back (7.1);
    second.push_back (1.4);
    
    first.sort();
    second.sort();
    
    first.merge(second);
    
    //使用merge后插入的list都为空
    
    second.push_back (2.1);
    
    first.merge(second,mycomparison);
    
    std::cout << “first contains:”;
    for (std::list::iterator it=first.begin(); it!=first.end(); ++it)
    std::cout << ' ' << *it;
    std::cout << ‘\n';
    
    return 0;
    }

    需要注意的是:

    • merge默认是使用<运算符
    • 如果通过pred修改为使用>运算符时
    • 相应的两个list容器中的元素也应该是按照从大到小的顺序排列
    • 否则会触发错误

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。 

    免费资源网,https://freexyz.cn/
    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。