std::list
和std::vector
是C++中的两种常见数据结构,它们在不同的使用场景下各有优势。
std::vector
的内部实现是动态数组,它在连续的内存块中存储数据。这使得std::vector
在访问元素时具有非常高的效率,因为可以直接通过索引来访问元素,时间复杂度为O(1)。然而,std::vector
在插入和删除元素时可能需要移动大量的元素,特别是在非尾部进行插入或删除操作时,时间复杂度为O(n)。std::list
的内部实现是双向链表,它在非连续的内存块中存储数据。这使得std::list
在插入和删除元素时具有非常高的效率,因为你只需要修改相关节点的指针,无需移动其他元素,时间复杂度为O(1)。然而,std::list
在访问元素时可能需要遍历整个链表,时间复杂度为O(n)。
如果主要的操作是插入元素insert操作,那么使用std::list
会比使用std::vector
更高效。
list插入元素和vector插入元素对比案例
vector的做法
class Solution {
public:
//注意cmp接收的是两个一维数组,而不是二维数组
static bool cmp(vector<int>& P1,vector<int>& P2){
if(P1[0]>P2[0]) return true;//整体降序
if(P1[0]==P2[0]){
if(P1[1]<P2[1])
return true;//p1[0]相同的时候按照p1[1]升序
}
return<