当前位置: 首页> 健康> 知识 > 九江建筑_中国广播电视总台官网_网页制作官方网站_seo推广效果

九江建筑_中国广播电视总台官网_网页制作官方网站_seo推广效果

时间:2025/9/29 23:58:23来源:https://blog.csdn.net/m0_53349772/article/details/143315845 浏览次数:0次
九江建筑_中国广播电视总台官网_网页制作官方网站_seo推广效果

目录

1.list容器

1.1构造和赋值

1.2交换和大小

1.3插入和删除

1.4数据存取和反转

1.5排序


1.list容器

list是物理存储单元上非连续的存储结构,通过链表中的指针链接,链表由结点组成,一个是数据域,一个是存储下一个结点的地址域,且STL中的链表是一个双向循环链表,如下图

注意:STL中list的迭代器只支持前移和后移,属于双向迭代器

优点:

  • 动态存储分配,不会浪费内存
  • 插入、删除方便,只用修改指针

缺点:

  • 指针域和遍历的额外消耗大

注意:list的插入、删除都不会使原有list迭代器失效,但vector不成立

1.1构造和赋值

【构造函数】

【赋值函数】

1.2交换和大小

【交换函数】

注意:交换时,list中存储的数据类型必须和原数据类型相同

【大小函数】

1.3插入和删除

 【插入函数】

【删除函数】

1.4数据存取和反转

【存取函数】

【反转函数】

注意:list容器不可以通过[ ]和at访问数据

1.5排序

注意:STL中的排序算法 sort(begin(),end())只支持随机访问迭代器的容器,list是双向迭代器,但它内部有提供list.sort()排序,两种不同

list<int> num;
//默认升序
num.sort();//回调函数
bool mySort(int v1,int v2)
{return v1 > v2;
}//利用回调函数,实现降序
num.sort(mySort);

注意:可以利用回调函数或仿函数改变函数默认规则

//举例
class Person
{
public:string m_Name;int m_Age;Person(string name,int age){m_Name = name;m_Age = age;}~Person();
};//打印list
void printList(list<Person>& l)
{for (list<Person>::iterator it = l.begin(); it != l.end(); it++){cout << (*it).m_Age << endl;cout << (*it).m_Name << endl;}
}//回调函数
bool mySort(Person& p1, Person& p2)
{return p1.m_Age < p2.m_Age;
}int main()
{list<Person> listPerson;listPerson.push_back(Person("zzz", 20));listPerson.push_back(Person("zzz",10));listPerson.push_back(Person("zzz", 60));listPerson.push_back(Person("zzz", 50));listPerson.push_back(Person("zzz", 40));//回调函数改变原有函数规则listPerson.sort(mySort);return 0;
}

关键字:九江建筑_中国广播电视总台官网_网页制作官方网站_seo推广效果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: