首页 > 其他分享 >vector的入队

vector的入队

时间:2023-09-12 18:22:06浏览次数:31  
标签:Vectex emplace float back 入队 vector Vectexies const

 

  • 这样会使用复制构造函数6次;push_back()是往后推,会复制一份
struct Vectex{
	float x,y,z;
	Vectex(float x,float y,float z)
		:x(x),y(y),z(z)
	{}
	Vectex(const Vectex& Vectex)
		:x(Vectex.x),y(Vectex.y),z(Vectex.z)
	{
		std::cout<<"Copied!"<<std::endl; 
	}	
};
int main(){
	std::vector<Vectex>Vectexies;
	Vectexies.push_back(Vectex(1,2,3));
	Vectexies.push_back(Vectex(4,5,6));
	
}
  •  使用emplace_back()是在原地开始推,调用复制函数3次
    struct Vectex{
    	float x,y,z;
    	Vectex(float x,float y,float z)
    		:x(x),y(y),z(z)
    	{}
    	Vectex(const Vectex& Vectex)
    		:x(Vectex.x),y(Vectex.y),z(Vectex.z)
    	{
    		std::cout<<"Copied!"<<std::endl; 
    	}	
    };
    int main(){
    	std::vector<Vectex>Vectexies;
    	Vectexies.emplace_back(Vectex(1,2,3));
    	Vectexies.emplace_back(Vectex(4,5,6));
    	
    } 
  • reserve先预定存放三个Vectex对象的空间,然后直接通过传参方式调用构造函数,不复制
#include<iostream>
#include<vector>
struct Vectex{
	float x,y,z;
	Vectex(float x,float y,float z)
		:x(x),y(y),z(z)
	{}
	Vectex(const Vectex& Vectex)
		:x(Vectex.x),y(Vectex.y),z(Vectex.z)
	{
		std::cout<<"Copied!"<<std::endl; 
	}	
};
int main(){
	std::vector<Vectex>Vectexies;
	Vectexies.reserve(3);//预定空间
	Vectexies.emplace_back(1,2,3);//存储参数
	Vectexies.emplace_back(4,5,6);
	
} 

 

标签:Vectex,emplace,float,back,入队,vector,Vectexies,const
From: https://www.cnblogs.com/wangkaixin-yy/p/17697477.html

相关文章

  • HyperVectorDB
    https://github.com/deatos/HyperVectorDBHyperVectorDBHyperVectorDBisalocalvectordatabasebuiltinC#thatsupportsvariousdistance/similaritymeasures.Itisdesignedtostorevectorsandassociateddocumentsandperformhigh-performancevectorque......
  • vector操作过程中出现的地址错误
    2023-08-2515:09:42startwriting:2023.8.2514:15事情的起因又是邪恶的yqt...为什么每次跟他都会遇到奇怪的事情注——这只是一个对在劳累却有趣的OI生涯中遇到的插曲的记录,不是专业人士,对内容的研究也只是浅尝辄止,学个经验看个乐子就好了。结论省流:如果你用一个指针......
  • 三、(续)vector学习
    1、容器特性1)顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2)动态数组支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。3)能够感知内存分配器的容器使用一......
  • 二、c++容器学习vector
    1、Vector介绍1.1vector基本概念vector与普通数组区别:不同区别是数组是静态空间,而vector可以是动态扩展。动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原始数据拷贝新空间,释放原空间。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构......
  • hashmap与hashtable,arraylist与vector
    hashmap:key可以为null,key为null的话,就不会计算hashcode码,直接给了一个0,hashmap是2倍扩容原来的容量左移一位,线程不安全,计算下标不同,hashmap下标是高位与地位的‘&’运算hashtable:key以及value都不能为null,value为null会抛异常,hashcode值是根据key来计算的,而null没有hashcode......
  • vector 动态添加
    #include<iostream>#include<vector>#include<string>#include<algorithm>intmain(){std::vector<std::string>myVector;//创建一个空的vector<string>std::stringinput;std::cout<<"请输入字符串(输入exi......
  • 【C++STL基础入门】vector运算和遍历、排序、乱序算法
    @TOC前言C++标准库提供了丰富的容器和算法,其中vector是最常用的容器之一。它以动态数组的形式存储元素,并提供了许多方便的运算符和算法来操作和处理数据。本文将介绍vector的基本运算、遍历方法、排序算法以及乱序算法。通过学习这些内容,您将能够更加灵活、高效地使用vector容器。......
  • 【openEuler创新项目探索】一个Java端的向量化BLAS库VectorBLAS
    VectorBLAS简介VectorBLAS是一个使用Java语言实现的向量化BLAS高性能库,目前已在openEuler社区开源。VectorBLAS通过循环展开、矩阵分块和内存布局优化等算法优化,对BLAS函数进行了深度优化,并利用VectorAPIJDK提供的多种向量化API实现。可以理解为:VectorBLAS=VectorAPI+BLAS......
  • 用vector或set建立邻接表
    用vector或set建立邻接表在一般情况下使用链表建立的邻接表就行,但若对节点下的子树的顺序有要求的话(树和图的搜索),链表显然不方便,他的顺序在输入时就固定了,所以这时就可以使用vector或set来构建邻接表了这样也就方便排序了P5318【深基18.例3】查找文献-洛谷思路与链表法相同......
  • 循环队列的定义、入队、出队等操作 C++代码实现
    #include<iostream>usingnamespacestd;/*循环队列的类型定义*/constintQueue_Size=100;typedefstructcirclQueue{char*elem;intrear;intfront;intqueueSize;}circlQueue;/*初始化*/voidinitQueue_C(circlQueue&......