首页 > 其他分享 >可恶的vector

可恶的vector

时间:2024-03-05 12:55:18浏览次数:21  
标签:int clear back vector swap push 可恶

前言

当你使用了\(vector\) 你一定觉得这是一个非常实用,非常好用的数据结构。当你这样想的时候,你就陷入了\(vector\)的圈套。

正文 注意事项

vector的定义与赋值操作

当你定义了一个指定大小的\(vector\),如:vectorv(N)此时容器中的所有元素都被赋值为\(0\)。如果你使用了v.push_back(x),此时\(v[N]\)的值为\(x\),\(v[0]\)的值为\(0\)。因为v.push_back(x)是向该容器的尾部插入\(x\),而\(v[0~N-1]\)都被赋值为\(0\),他们是有值得。

具体事例

#include<bits/stdc++.h>
#define set thesetisset
using namespace std;
vector<int > v(10);
int main(){
	for(int i=0;i<v.size();i++) cout <<v[i]<<" ";
	cout<<endl;
	v.push_back(114514);
	for(int i=0;i<v.size();i++) cout<< v[i]<<" ";
	int n=v.size();
	return 0;
}

vector的清空

clear()

使用方法 \(v.clear();\)

原理 把\(v.size()\)设置为 \(0\)

注意当你使用 v.clear()的时候vector并没有真正的清空,此时原有的元素并没有发生改变。虽然你在之后的使用中,会把元素覆盖,但这依然值得注意。

#include<bits/stdc++.h>
using namespace std;
vector<int > v;
int main(){
	v.push_back(1);
	v.push_back(1);
	v.push_back(4);
	v.push_back(5);
	v.push_back(1);
	v.push_back(4);
	int n=v.size();
	for(int i=0;i<=n;i++) cout <<v[i]<<" ";
	cout<<endl;
	
	v.clear();
	for(int i=0;i<=n;i++) cout <<v[i]<<" ";
	cout<<endl;
	v.push_back(6);
	for(int i=0;i<=n;i++) cout <<v[i]<<" ";
	return 0;
}

erase()

不是特别常用。这里就不说明了。

swap()

使用方法
一维

vector<int>().swap(v);

二维

for(int i=0;i<=N;i++){ vector<int>().swap(son[i]);

原理 将当前v与一个空的vector交换。

标签:int,clear,back,vector,swap,push,可恶
From: https://www.cnblogs.com/wh1sky/p/18053776

相关文章

  • 37vector容器与API
    vector容器与API#include<iostream>#include<vector>usingnamespacestd;/*vector容器:向量容器底层数据结构:动态开辟的数组,每次以原来空间2倍进行扩容vector<int>vec;增加:vec.push_back(20);末尾添加元素O(1)导致容器扩容vec.insert(it,20);it迭代器指向的位......
  • 39vector, deque, list之间的对比
    vector,deque,list之间的对比vector的特点:动态数组内存是完全连续的扩容:2倍形式扩容,扩容时要开辟新的内存空间,并将数据拷贝list的特点:双向循环链表内存是不连续的没有扩容需求deque的特点:参考动态开辟的二维数组空间内存分段连续第二维是固定长度的数组......
  • [详解-vector] C++必知必会 vector常用各种操作解析
    原文转载自知乎:https://zhuanlan.zhihu.com/p/648650828vector是C++标准库中的一个动态数组容器,它可以自动管理内存大小,可以在运行时根据需要动态增长或缩小。它是一个非常常用且强大的容器,用于存储一系列元素。下面详细介绍vector的使用方法,并提供相应的代码案例。1.包含......
  • c++复习笔记——STL(vector)
    c++-----STL容器系列(1)vector1介绍Vector是stl容器中一种常见的容器,基本和数组类似,其大小(size)可变,常用于数组长度不确定时来代替数组,当数据超过vector预定值时vector将自动扩容。Vector是一种顺序存储器,在内存中连续排列,可以通过下标访问,时间复杂度为O(1)。2创建和使用使用......
  • vector
    vector的定义和特征动态数组容器存储一系列相同类型的元素标准库<vector>中定义的模板类声明加头文件<vector>vector<T>vec;T☞元素类型容器大小:动态数组可以自己调节元素访问:通过索引来访问vector中的元素,索引从0开始,到size()-1.可以使用[]运算符或at()函数来......
  • vector用法
    1.vector的构造函数函数原型:1.vector<T>v;//使用模板类,默认构造函数2.vector(v.begin(),v.end());//将[v.begin(),v.end())区间中的元素拷贝给本身3.vextor(n,elem);//将n个elem拷贝给本身4.vector(constvector&v);//拷贝构造函数2.vector的赋值操作函数原型:1.vector&o......
  • STL-vector模拟实现
    #pragmaonce#include<assert.h>#include<iostream>usingstd::cout;usingstd::endl;usingstd::cin;namespacetest{//#include<algorithm>//模板参数省略:1.作为时2.作为类型名template<classT>//数组名:类型名:xx数组classvector......
  • Qt QVector和vector以及QMap和map的遍历性能对比
    使用Qt中的容器给C++开发带来很大的便利,而且QVector和QMap等容器扩展的一些成员函数也是很方便的。但是Qt的这些容器和STL库的容器比,效率到底怎么样?我就写了几个简单的遍历的例子,测试了QVector、vector等容器的那些方法效率更高。测试环境:系统:windows10编译器:MingGWmingw......
  • Qt QVector、QList、QSet和QMap:性能与用途比较
    Qt提供了多种容器类,用于存储和管理数据。其中,QVector、QList、QSet和QMap是最常用的几种。这些容器类在性能和用途方面存在一些差异,选择合适的容器对于提高应用程序的效率和正确性至关重要。下面我们将从以下几个方面对这四种容器进行比较:1.存储方式QVector:动态数组,元素在......
  • C++ STL 容器-Vector类型
    C++STL容器-Vector类型std::vector是C++标准库中的一个动态数组容器,它提供了随机访问迭代器,因此你可以像使用普通数组一样使用vector。vector容器可以动态地增长和缩小,这意味着你可以在不预先指定数组大小的情况下向其中添加或删除元素。特点动态大小:vector的大小可以在运......