C++,stl,vector容器详解

news2024/9/21 10:54:57

目录

 1.vector基本概念

2.vector的创建

3.vector赋值操作

4.vector容量和大小的操作

5.vector容器的插入和删除

6.vector容器的数据存取

 7.vector互换容器

8.vector容器预留空间


 1.vector基本概念

 

2.vector的创建

 

#include<bits/stdc++.h>
using namespace std;

int main()
{
	vector<int> v1;
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	
	for(vector<int>::iterator i = v1.begin(); i != v1.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
		
	vector<int> v2(v1.begin(),v1.end());
	for(vector<int>::iterator i = v2.begin(); i != v2.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
	
	vector<int> v3(5,100);
	//第一个为个数,第二个为赋值
	for(vector<int>::iterator i = v3.begin(); i != v3.end(); i++)
		cout << *i << ' ';
	
	cout << endl;
	
	vector<int> v4(v3);
	//拷贝构造
	for(vector<int>::iterator i = v4.begin(); i != v4.end(); i++)
		cout << *i << ' ';
		
	return 0;
}

 

3.vector赋值操作

 

#include<bits/stdc++.h>
using namespace std;

void print(vector<int> &v)
{
	for(vector<int>::iterator i = v.begin(); i != v.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
}
int main()
{
	vector<int> v1;
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	print(v1);
	
	vector<int> v2;
	v2 = v1;
	print(v2);
	
	vector<int> v3;
	v3.assign(v1.begin(),v1.end());
	print(v3);
	
	vector<int> v4;
	v4.assign(3,100);
	print(v4);
	
	return 0;
}

 

4.vector容量和大小的操作

 

#include<bits/stdc++.h>
using namespace std;

void print(vector<int> &v)
{
	for(vector<int>::iterator i = v.begin(); i != v.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
}
int main()
{
	vector<int> v1;
	cout << v1.empty() << endl;
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	cout << v1.empty() << endl;
	cout << endl << v1.capacity() << endl;
	cout << endl << v1.size() << endl << endl;
	
	v1.resize(8,10);
	//将长度变为8,用10填充新的位置,(新的位置默认填充是0)
	//如果重新指定的size比原来短,多余的会被删除
	print(v1);
	
	return 0;
}

 

5.vector容器的插入和删除

#include<bits/stdc++.h>
using namespace std;

void print(vector<int> &v)
{
	for(vector<int>::iterator i = v.begin(); i != v.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
}
int main()
{
	vector<int> v1;
	
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	
	print(v1);
	
	v1.pop_back();
	print(v1);
	
	v1.insert(v1.begin(),2,100);
	//第一个参数是迭代器
	print(v1);
	
	v1.erase(v1.begin());
	print(v1);
	
	v1.erase(v1.begin(),v1.end());
	print(v1);
	
	v1.clear();
	//全部清空的操作
	return 0;
}

 

6.vector容器的数据存取

 

#include<bits/stdc++.h>
using namespace std;

void print(vector<int> &v)
{
	for(vector<int>::iterator i = v.begin(); i != v.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
}
int main()
{
	vector<int> v1;
	
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	
	for(int i = 0; i < v1.size(); i ++)
	{
		cout << v1[i] << ' ';
	}
	cout << endl;
	
	for(int i = 0; i < v1.size(); i++)
	{
		cout << v1.at(i) << ' ';
	}
	cout << endl;
	
	cout << v1.front() << endl;
	cout << v1.back() << endl;
	
	return 0;
}

 

 

 7.vector互换容器

 

#include<bits/stdc++.h>
using namespace std;

void print(vector<int> &v)
{
	for(vector<int>::iterator i = v.begin(); i != v.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
}
int main()
{
	vector<int> v1;
	
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	
	vector<int> v2;
	v2.push_back(1);
	v2.push_back(1);
	v2.push_back(1);
	
	print(v1);
	print(v2);
	
	v1.swap(v2);
	
	print(v1);
	print(v2);
	
	//如果我们创建了一个vector<int>v,让它存了很多东西
	//之后又用resize把它的大小变小了,但它的capacity没有改变,还是很大
	//使用vector<int>(v).swap(v)可以巧妙的收缩内存
	//这行代码创建了一个大小为v的vector容器的匿名对象与v进行了交换
	//匿名对象在下一行后内存就会被释放
	
	return 0;
}

8.vector容器预留空间

 

#include<bits/stdc++.h>
using namespace std;

void print(vector<int> &v)
{
	for(vector<int>::iterator i = v.begin(); i != v.end(); i++)
		cout << *i << ' ';
		
	cout << endl;
}
int main()
{
	vector<int> v1;
	
	v1.push_back(5);
	v1.push_back(3);
	v1.push_back(7);
	v1.push_back(1);
	v1.push_back(2);
	
	cout << v1.capacity() << endl;
	cout << v1.size() << endl;
	
	v1.reserve(100);
	
	cout << v1.capacity() << endl;
	cout << v1.size() << endl;
	
	return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1437370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS综合案例4

CSS综合案例4 1. 综合案例 我们来做一个静态的轮播图。 2. 分析思路 首先需要加载一张背景图进去需要4个小圆点&#xff0c;设置样式&#xff0c;并用定位和平移调整位置添加两个箭头&#xff0c;也是需要用定位和位移进行调整位置 3. 代码演示 html文件 <!DOCTYPE htm…

一个Vivado仿真问题的debug

我最近在看Synopsys的MPHY仿真代码&#xff0c;想以此为参考写个能实现PWM-G1功能的MPHY&#xff0c;并应用于ProFPGA原型验证平台。我从中抽取了一部分代码&#xff0c;用Vivado自带的仿真器进行仿真&#xff0c;然后就遇到了一个莫名其妙的问题&#xff0c;谨以此文作为debug…

vue3项目中使用mapv

vue3项目中使用mapv mapv是百度地图官方提供的地图数据可视化开源项目&#xff0c;提供了很多效果酷炫的绘图api mapv地址在这里&#xff0c;示例图在这里 先解释为什么要用mapv echarts画的地图&#xff0c;都是行政区划&#xff0c;就算是geo地图&#xff0c;也只能在行政…

基于YOLOv8的暗光低光环境下(ExDark数据集)检测,加入多种优化方式---DCNv4结合SPPF ,助力自动驾驶(一)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了暗光低光数据集检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析&#xff0c;以及如何优化提升检测性能。 &#x1f4a1;&#x1f4a1;&#x1f4a1;加入 DCNv4结合SPPF mAP0.5由原始的0.682提升至…

跳过mysql密码并重置密码 shell脚本

脚本 目前只是验证了5.7 版本是可以的&#xff0c;8.多的还需要验证 以下是一个简单的Shell脚本&#xff0c;用于跳过MySQL密码设置并重置密码&#xff1a; #!/bin/bash yum install psmisc -y# 停止MySQL服务 sudo service mysqld stop# 跳过密码验证 sudo mysqld --skip-g…

品牌如何营造生活感氛围?媒介盒子分享

「生活感」简而言之是指人们对生活的感受和意义&#xff0c;它往往没有充斥在各种重要的场合和事件中&#xff0c;而是更隐藏在细碎平凡的生活场景中。在营销越来越同质化的当下&#xff0c;品牌应该如何打破常规模式&#xff0c;洞察消费情绪&#xff0c;找到更能打动消费者心…

4.JS变量(变量本质,声明,更新,交换,命名规则,let和var的区别,数组简单使用)

什么是变量&#xff1f; 这里就写个人理解把&#xff0c;不仅仅是针对于js&#xff0c;在编程语言中&#xff0c;要想要计算机执行并且理解人类的意图&#xff0c;那么首先计算机要存储人类输入的数据&#xff0c;这个时候变量的作用就来了&#xff0c;变量的意义在于人类告诉…

敏捷开发中的用户故事

用户故事 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#xff0c…

LLM是一个向量程序库,提示是查询语言

2013 年&#xff0c;Mikolov 等人在 Google。 注意到一些值得注意的事情。 他们正在构建一个模型&#xff0c;将单词嵌入到向量空间中——这个问题从 20 世纪 80 年代开始就已经有很长的学术历史了。 他们的模型使用了一个优化目标&#xff0c;旨在将单词之间的相关关系转化为…

【刷题日记】最长定差子序列

给你一个整数数组 arr 和一个整数 difference&#xff0c;请你找出并返回 arr 中最长等差子序列的长度&#xff0c;该子序列中相邻元素之间的差等于 difference 。 子序列 是指在不改变其余元素顺序的情况下&#xff0c;通过删除一些元素或不删除任何元素而从 arr 派生出来的序…

HDL Designer 2021.1 如何将默认编辑器修改为VsCode

第1步 安装Vscode 第2步 添加Vscode至HDL Designer 第3步 更改HDL Designer编译器 第4步 修改结束&#xff0c;在HDL Designer中双击block可使用Vscode编辑verilog

SpringBoot+Druid并开启监控页面

介绍 Druid 是一个开源的数据库连接池项目&#xff0c;由阿里巴巴集团开发并贡献给开源社区。它在Java领域中以其高性能、强大功能和易用性著称&#xff0c;是Java应用中广泛使用的数据库连接池组件之一。 Druid 的主要特点包括&#xff1a;   高性能与低延迟&#xff1a; Dr…

2月6日作业

1.现有无序序列数组为23,24,12,5,33,5347&#xff0c;请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用快速排序实现升序排序 函数4:请使用插入排序实现升序排序 #include<stdio.h> #include<string.h&…

我的QQ编程学习群

欢迎大家加入我的QQ编程学习群。 群号:950365002 群里面有许多的大学生大佬&#xff0c;有编程上的疑惑可以随时问&#xff0c;也可以聊一些休闲的东西。 热烈欢迎大家加入&#xff01;&#xff01; 上限:150人。

C++核心deque容器,stack容器,queue容器,list容器,set容器,pair ,map容器

3.deque容器 1.deque容器的基本概念 Vector容器是单向开口的连续内存空间&#xff0c;deque则是一种双向开口的连续线性空间。所谓的双向开口&#xff0c;意思是可以在头尾两端插入元素&#xff0c;但是在其头部操作效率奇差&#xff0c;无法被接受。 deque容器和vector容器最…

【C++第二阶段】空指针访问成员函数常成员函数常成员属性

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 空指针访问成员函数常成员函数&常成员属性 空指针访问成员函数 类对象类型的空指针可以访问成员函数&#xff0c;但是不能够访问带有成员属性的成员函数。…

Java基于微信小程序的医院核酸检测服务系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

arduino D1 中esp8266 没有ide的库

http://arduino.esp8266.com/stable/package_esp8266com_index.json https://arduino.esp8266.com/stable/package_esp8266com_index.json 这个是官网的包地址 拿到后复制到arduino ide中 然后在开发板管理器&#xff0c;搜索esp&#xff0c;搜出来后安装 去开发板选择 然后测…

俩种方法解决 VScode中 NPM 脚本消失,NPM 脚本未显示在资源管理器侧栏中

npm脚本是npm包管理器的一个功能&#xff0c;允许开发者在package.json文件中定义一系列命令脚本&#xff0c;用于执行各种开发任务。 今天打开准备运行的时候发现找不到NPM脚本了&#xff0c;左侧的一栏完全没有显示&#xff0c;在网上查阅了很多资料后总结出俩个方法可以用来…

前端基础复习(后端人员看前端知识)

企业级前端项目开发中&#xff0c;需要将前端开发所需要的工具、技术、流程、经验进行规范化和标准化&#xff0c;而不是零散的html、js、css文件堆叠在一起。 首先我们需配置前端的开发基础环境NodeJS&#xff0c;相当于后端人员java开发的JDK。然后搭建前端工程脚手架Vue-cl…