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

 更新时间:2024年04月24日 08:40:41   作者:Never mind  
这篇文章主要介绍了C++ list容器merge算法的使用以及注意事项,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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;

该代码由于list顺序不一致执行将导致程序出错

将lst2改为顺序后可正常输出。

(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容器中的元素也应该是按照从大到小的顺序排列
  • 否则会触发错误

总结

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

相关文章

  • C++中检查vector是否包含给定元素的几种方式详解

    C++中检查vector是否包含给定元素的几种方式详解

    这篇文章主要介绍了C++中检查vector是否包含给定元素的几种方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • C语言中的字符(char)详细讲解

    C语言中的字符(char)详细讲解

    本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下
    2016-07-07
  • return和break的区别解析

    return和break的区别解析

    这篇文章主要介绍了return和break的区别解析,需要的朋友可以参考下
    2014-02-02
  • C++中标准线程库的基本使用介绍

    C++中标准线程库的基本使用介绍

    大家好,本篇文章主要讲的是C++中标准线程库的基本使用介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • C++利用map实现并查集

    C++利用map实现并查集

    这篇文章主要为大家详细介绍了C++利用map实现并查集,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Qt中图片旋转缩放操作的实现

    Qt中图片旋转缩放操作的实现

    本文主要介绍了Qt中图片旋转缩放操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • C++ 项目引入lib和dll的区别与使用实战

    C++ 项目引入lib和dll的区别与使用实战

    静态链接库与动态链接库都是共享代码的方式,本文主要介绍了C++项目引入lib和dll的区别与使用实战,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • C++详细讲解常用math函数的用法

    C++详细讲解常用math函数的用法

    C++提供了很多实用的数学函数,如果要使用先添加头文件,当然,加头文件谁都知道,接下来我们一起详细看看各个math函数的实际使用
    2022-04-04
  • C语言深入了解函数

    C语言深入了解函数

    C语言函数是用来模块化构建程序的。如果你的功能少,你可以全都写在mian函数中,但是当实现功能多的时候,如果全写在main的函数里,不仅代码不美观,而且函数实现的时候结构复杂,代码重复
    2022-05-05
  • c++实现图像像素计算的示例详解

    c++实现图像像素计算的示例详解

    我们知道每张图像都能够用矩阵来表示,矩阵中每个元素的值表示了图像中每个像素值,像素值的大小就对应着图像的亮暗,本文主要来和大家介绍一下C++进行图像像素计算的相关知识,感兴趣的可以了解下
    2023-12-12

最新评论