C++STL容器----List

  • 概念
  • 创建一个List
  • List访问方式
  • List常见接口

概念

List底层就是一个双向带头循环链表,与vector相比,List的插入与删除更加方便,只需要O(1)的时间复杂度,但是缺点也很明显,就是不能像vector一样支持随机访问。所以在使用时要根据实际情况进行选择。

创建一个List

使用List要包含头文件
List共有4种构造函数。

#include 

int main(){
	List l1;//无参构造,存储类型为int型
	List l2(n, val);//初始化n个val值存放在l2中
	int arr[4] = {0,1,2,3};
	List l3(arr, arr + 4);//迭代器构造
	List l4(l3)//拷贝构造
	return 0;
}

List访问方式

List有有两种访问方式:
第一种,范围for循环

#include 
#include 
using namespace std;

int main(){
	int arr[4] = {0,1,2,3};
	List l3(arr, arr + 4);//迭代器构造
	for(int num : l3){
		cout << num << " ";
	}
	cout << endl;
	return 0;
}

第二种,迭代器访问

#include 
#include 
using namespace std;

int main(){
	int arr[4] = {0,1,2,3};
	List l3(arr, arr + 4);//迭代器构造
	List::iterator it = l3.begin();
	while(it != l3.end()){
		cout << *it << " ";
		it++;
	}
	cout << endl;
	return 0;
}

List常见接口

迭代器接口:

#include 

int main(){
	List l1;//无参构造
	//l1.begin();返回l1的第一个元素的迭代器
	//l1.end();返回最后一个元素的next域
	//l1.rbegin();返回最后一个元素的迭代器
	//l1.rend();返回第一个元素的prev域
	return 0;
}

空间相关接口:

#include 

int main(){
	List l1;//无参构造
	//l1.empty();//判断l1是否为空
	//l1.size();//返回l1有效元素个数
	return 0;
}

增删查改接口:

#include 

int main(){
	List l1;//无参构造
	//l1.push_back(val);尾插val数据
	//l1.push_front(val);头插val数据
	//l1.pop_back();尾删一个数据
	//l1.pos_front();头删一个数据
	//l1.insert(pos, val);在pos位置前面插入val数据
	//l1.erase(pos);删除pos位置数据
	List l2(n, val);//初始化n个val值存放在l2中
	//l1.swap(l2);//交换l1与l2的内容
	//l1.clear();清除l1所有有效数据
	return 0;
}

你可能感兴趣的:(c++,c++,链表,stl,listbox,mysql)