list
双向列表,链式存储
1 生成构造
#include <iostream>
#include <list>
int main ()
{
std::
list<int> first;
std::
list<int> second (
4,
100);
std::
list<int> third (second.begin(),second.end());
std::
list<int> fourth (third);
int myints[] = {
16,
2,
77,
29};
std::
list<int> fifth (myints, myints +
sizeof(myints) /
sizeof(
int) );
std::
list<int> first (
3);
std::
list<int> second (
5);
second = first;
return 0;
}
2 操作
2.1 大小和容量
#include <iostream>
#include <list>
int main ()
{
std::
list<int> mylist(
5,
1);
mylist.size();
mylist.max_size();
mylist.resize(
10);
mylist.empty();
return 0;
}
2.2 比较
2.3 find
2.4 截取部分
2.5 增,插,删,改
#include <iostream>
#include <list>
int main ()
{
std::
list<int> mylist(
5,
1);
mylist.assign(
3,
2);
mylist.pop_back();
mylist.pop_front();
mylist.push_back(
1);
mylist.push_front(
3);
mylist.insert(mylist.cbegin(),
2);
int ints[]={
9,
5,
2,
7};
mylist.insert(mylist.cbegin(),ints,ints+
4);
mylist.erase(mylist.begin());
mylist.remove(
2);
mylist.clear();
std::
list<int> mylist2(
3,
1);
mylist.swap(mylist2);
for(
auto it=mylist.cbegin();it!=mylist.cend();it++)
std::
cout<<*it<<
' ';
return 0;
}
2.6元素存取
#include <iostream>
#include <list>
int main ()
{
std::
list<int> mylist(
5,
1);
mylist.back();
mylist.front();
return 0;
}
2.7其他
#include <iostream>
#include <list>
bool mycomparison (
double first,
double second)
{
return (
int(first)<
int(second) ); }
int main ()
{
std::
list<double> 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);
second.push_back (
2.1);
first.merge(second,mycomparison);
std::
cout <<
"first contains:";
for (
std::
list<double>::iterator it=first.begin(); it!=first.end(); ++it)
std::
cout <<
' ' << *it;
std::
cout <<
'\n';
return 0;
}