首页 > 编程开发 > C类语言    日期:2024-06-09 / 浏览

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

总结

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

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章