首页 > 其他分享 >37vector容器与API

37vector容器与API

时间:2024-03-04 21:47:12浏览次数:31  
标签:容器 vector 20 迭代 37vector API vec

vector容器与API

#include <iostream>
#include <vector>
using namespace std;

/*
vector容器:向量容器
底层数据结构:动态开辟的数组,每次以原来空间2倍进行扩容

vector<int> vec;
增加:
vec.push_back(20); 末尾添加元素 O(1) 导致容器扩容
vec.insert(it, 20); it迭代器指向的位置添加一个20 O(n)

删除:
vec.pop_back(); 末尾删除元素 O(1)
vec.erase(it); 删除it迭代器指向的元素

注意:对容器进行连续插入或删除操作,须更新迭代器,否则第一次insert或erase完成后迭代器就失效了。

查询:
operator[] 下标随机访问vec[5] O(1)
iterator 迭代器遍历
find, for_each
foreach => 通过iterator实现

常用方法介绍:
size()
empty()
reserve() 预留空间  提前开辟空间(capacity),不会添加元素
resize() 扩容       开辟空间,并添加0
swap()

*/

int main()
{
	vector<int> vec;
	vec.reserve(20);

	cout << vec.capacity() << endl;
	cout << vec.size() << endl;
	cout << vec.empty() << endl;

	for (int i = 0; i < 20; ++i)
	{
		vec.push_back(rand() % 100 + 1);
	}

	cout << vec.capacity() << endl;
	cout << vec.size() << endl;
	cout << vec.empty() << endl;

	int size = vec.size();
	for (int i = 0; i < size; ++i)
	{
		cout << vec[i] << " ";
	}
	cout << endl;

	auto it2 = vec.begin();
	while (it2 != vec.end())
	{
		if (*it2 % 2 == 0)
		{
			it2 = vec.erase(it2);
		}
		else
		{
			++it2;
		}
	}

	auto it1 = vec.begin();
	for (; it1 != vec.end(); ++it1)
	{
		cout << *it1 << " ";
	}
	cout << endl;

	it1 = vec.begin();
	for (; it1 != vec.end(); ++it1)
	{
		if (*it1 % 2 != 0)
		{
			it1 = vec.insert(it1, *it1 - 1);
			++it1;
		}
	}

	it1 = vec.begin();
	for (; it1 != vec.end(); ++it1)
	{
		cout << *it1 << " ";
	}
	cout << endl;

	return 0;
}

标签:容器,vector,20,迭代,37vector,API,vec
From: https://www.cnblogs.com/sio2zyh/p/18052774

相关文章

  • 38deque, list及其API
    deque,list及其APIdeque:双端队列容器。底层数据结构:动态开辟的二维数组,一维数组是指针数组,长度从2开始,以2倍的方式进行扩容,每次扩容后,原来第二维的数组,从新的第一维数组的下标oldsize/2开始存放,上下都预留相同的空行,方便支持deque的首尾元素添加。deque<int>deq;......
  • 40容器适配器
    容器适配器标准容器-容器适配器适配器底层没有自己的数据结构,它是另外一个容器的封装,它的方法全部由底层依赖的容器实现。容器适配器没有实现自己的迭代器。参考stack,deque依赖deque;priority_deque依赖vector前者的原因:vector的初始内存使用效率太低,需要多次resize;......
  • 41无序关联容器与有序关联容器
    无序关联容器与有序关联容器参考迭代器普通的正向迭代器iterator反向迭代器reverse_iterator常量迭代器:const_iterator是iterator的基类,返回一个常指针vector<int>vec;vector<int>::iteratorit=vec.begin();//可以通过*it修改vec的值vector<int>::reverse_iterator......
  • ChatGPT4.0_API
    importopenaiimportjsonimportos#openai.api_key=get_api_key()openai.api_key="yourkey"#q="用python实现:提示手动输入3个不同的3位数区间,输入结束后计算这3个区间的交集,并输出结果区间"#q="WhatisthvbScript?"#q="翻译成日语:市场非常有潜力"#q="北京、......
  • 微信小程序开发:接入阿里云人像动漫化api接口
    前面我已经把腾讯云的人像转动漫化接口接到了我的小程序里,但是和阿里云的对比后,发现阿里云的效果会更好一些,且支持更多特效,如下: 我比较喜欢这个3D特效风格,动画3D也可以,大家拭目以待。话说上次接了腾讯云的人像转动漫接口,小程序提审后居然没过,说什么我的小程序设计AI合成: ......
  • 七款顶级API测试工具
    在现代软件开发中,API接口已成为不可或缺的核心组件。鉴于API缺乏直观的图形用户界面(GUI),使得直接对接口进行测试变得困难,对于前后端开发者而言,选择一套高效且实用的工具来测试API接口,从而验证开发的程序是否满足预期,显得尤为重要。在处理大量API时,手动测试不仅效率低下,而且容易出错......
  • docker容器命令
      docker是基于linux内核的,必须需要linux系统才能运行起来。1.创建容器实例dockerrun[options]image[command][arg...] #启动交互式容器命令dockerrun-itubuntu/bin/bash  宿主机的端口:docker中的端口。 2.查看正在运行的容器dockerps【options】......
  • docker系列教程04---容器网络
    一、Docker不启动时默认的网络情况这里先把Docker停掉了,然后咱们ifconfig看一眼:ifconfig ens33不用多说了,lo为回环。这里可能还会有一个virbr0,在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr......
  • 全网首套完整containerd容器工具教程
    1、Containerd的由来【Docker名噪一时,捐出runC】2013年docker公司在推出docker产品后,由于其对全球技术产生了一定的影响力,Google公司明显感觉到自己公司内部所使用的Brog系统江湖地位受到的威胁,希望Docker公司能够与自己联合打造一款开源的容器运行时作为Docker核心依赖,但Docker......
  • 气象信息API
    用WPF技术搭建简单的气象免费小控件,注册取得key 前端代码:<Grid><Grid.ColumnDefinitions><ColumnDefinitionWidth="611*"/><ColumnDefinitionWidth="189*"/></Grid.ColumnDefinitions><......