链表:缺点 :无法访问位置 没有Index的概念。数组可以[index].
优点:在序列已知的任何位置插入或删除元素。可以合并、去重、交换。
一样的增删改查上代码
void listtest()
{
cout << "list*******************" << endl;
cout << "定义 list < string> strlist" << endl;
list < string > strlist;
cout << "插入 1.头,push_front;2.尾,push_back;3.指定位置(,,"")" << endl;
strlist.push_front("frist");
strlist.push_back("end");
auto iter = begin(strlist);
strlist.insert(++iter,3, "a");
for (auto it = strlist.begin(); it != strlist.end(); it++)
{
cout << *it << endl;
}
cout << "****************" << endl;
int a[5] = { 1, 3, 2, 4, 2 };
int b[7] = { 10, 30, 20, 30, 30, 40, 40 };
list<int> lst1(a, a + 5);
list<int> lst2(b, b + 7);
cout << "1)"; Print(lst1.begin(), lst1.end()); //输出:1)1 2 2 3 4
lst1.remove(2); //删除所有和A(2)相等的元素
cout << "2)"; Print(lst1.begin(), lst1.end()); //输出:2)1 3 4
lst2.pop_front(); //删除第一个元素
cout << "3)"; Print(lst2.begin(), lst2.end()); //输出:3)30 20 30 30 40 40
lst2.unique(); //删除所有和前一个元素相等的元素
cout << "4)"; Print(lst2.begin(), lst2.end()); //输出:4)30 20 30 40
lst2.sort();
cout << "5)"; Print(lst2.begin(), lst2.end()); //输出:4)30 20 30 40
lst1.merge(lst2); //合并 lst2 到 lst1 并清空 lst2
cout << "6)"; Print(lst2.begin(), lst2.end());
cout << "6)"; Print(lst1.begin(), lst1.end());
}