首页 > 其他分享 >初识vector

初识vector

时间:2024-05-10 18:00:43浏览次数:20  
标签:10 初始化 元素 初识 vector error hello

一、定义和初始化vector

1、初始化

vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型。如vector < int >。

1、默认初始化

vector<string> s; 

2、拷贝初始化

注意:字面值不能构造vector对象

vector<int> i;
vecotr<int> i2(i);
vector<int> i3 = i;
vector<int> i4 = 10;    //error
vecotr<string> i5(i);   //error:类型必须匹配

3、使用初始化列表

vector<int> a = {1,2,3,4,5};
vector<int> a2{1,2,3,4,5};
vector<int> a3(1,2,3,4,5);  //error:拷贝时只能有一个初始值

4、使用指定大小进行值初始化

std::vector<int> vec(10);  // 10个int元素,每个都初始化为0

5、使用指定大小和值进行初始化

vector<int> a(10, 1);

2、两个注意

注意1:区别花括号圆括号初始化

vector<int> v1(10); //10个元素,都是0
vector<int> v2{10}; //1个元素,10

vecotr<int> v3(10, 1);//10个元素,都是1
vecotr<int> v4{10, 1};//2个元素,10和1

注意2:使用了花括号初始化列表,但是值不能用来列表初始化,需要考虑构造初始化

vector<string> v5{"hello"}; 

vector<string> v6("hello"); 
//不能用字面值进行构造初始化

vector<string> v7{10};  
//使用int进行初始化,类型不符,需要考虑构造初始化,结果是10个默认初始化的元素
//相当于vector<string> v7(10);

vector<string> v8{10, "hello"};
//使用列表初始化,第一个元素值不是string类型,需要考虑是否为构造初始化,结果是10个hello。
//相当于vector<string> v8(10, "hello");

二、向vector中添加元素

上面初始化适用于初始元素较少的时候,元素多了一般定义一个空的vector,再用push_back进行添加。在C++中,vector可以高效增长,所有尽量不给vector设置大小。

push_back方式添加元素

vector<int> a;
int num;
while(cin >> num)
{
    a.push_back(num);
}

注意:不能使用下标添加元素

vector<int> a;
for(i = 0; i != 10; i++)
{
    a[i] = i;
}
//error,a中本来不包括任何元素

三、其他vector操作

操作与string的其他操作相同。

注意,在进行下标操作的时候只能对已经存在的元素执行。尽量使用范围for语句,确保下标的合法

vector<int> a(10);
cout << a[9] << endl;
cout << a[9] << endl;   //error:下标越界

标签:10,初始化,元素,初识,vector,error,hello
From: https://www.cnblogs.com/baobaobashi/p/18185028

相关文章

  • Docker 必知必会----初识
    什么是Docker?Docker是一个开源的容器管理引擎。开发者可以通过Docker直接管理应用程序所需要的容器。它的logo如下: 为什么需要Docker使用Docker主要有两个原因,1、屏蔽不同环境的硬件差异,减轻开发人员在不同环境上,为了适配环境差异所需要做的工作。如各项系统配置、环境变量、......
  • apache druid 初识
    一:Apachedruid是一种实时分析数据库,设计用于对大型数据集进行快速分析(OLAP),支持数据的实时摄取,提供低时延的查询性能。二:Apachedruid主要特点(1)列式存储格式,查询时只加载特定查询的列,还根据数据类型优化每一列的存储,加快查询速度。(2)可扩展的分布式系统。典型的Druid部署......
  • c语言实现vector及其相关函数(自存)
    #include<stdio.h>#include<stdlib.h>#definePREALLOC_MAX1024#defineDEFAULT_CAPACITY8typedefintE;typedefstruct{E*elements;//指向堆空间的数组intsize;//元素的个数intcapacity;//数组的容量}Vector;voidpush_back(Vect......
  • 一文详解C++的vector
    vector是C++中使用频率最高的标准库,可以在程序运行时动态改变其大小(例如添加或删除元素),因此又被称为动态数组。使用时,用户无需在意底层内存管理的细节,因为它已经帮你做了这件事情。使用前需要导入<vector>头文件,以下是vector的常见用法:1.创建vectorvector用于保存一组同类型的......
  • vector开二维数组&&深搜迷宫问题&&BFS
    vector<vector>vis(N+10(一维的大小),vector(N+10(二维的大小),0(初始化赋值)),step(N+10,vector(N+10,0));vector<vector>vis(N+10,vector(N+10)),step(N+10,vector(N+10));开数组大小一定要超过题目本身大小;#include<bits/stdc++.h>usingnamespacestd;#defineintl......
  • JDK源码分析-Vector
    概述Vector是Java集合中线程安全的动态数组,它也可以根据需要进行扩容和缩容,与ArrayList类似。但有一个重要的区别,Vector是同步的,也就是它的操作是线程安全的,在某些特定场景下是可以保证线程安全的,但同时也会带来性能损耗,因此在单线程环境通常还是推荐使用ArrayList。类图......
  • [ARC176E] Max Vector
    MyBlogs[ARC176E]MaxVector\(n=10\)其实有点误导性。其实这个题不是指数级的算法,而且贪心也不是很合理,同时“要么...要么...”有点像最小割。一次操作可以看成要求\(x_j\geqa_{i,j}\)或者\(y_j\geqa_{i,j}\)。考虑切糕的模型,建\(2n\)条链,割哪条边就表示第\(i\)个......
  • C++ Vector fundamental
    C++Vectorfundamental主要内容包括:引入头文件,如何创建并初始化,访问容量,增查删改;1.包含头文件#include<vector>#include<iostream>2.创建vectorvector<int>v;vector<char>v1;vector<string>v2;3.初始化一维vector初始化后不进行赋值,直接访问会报错;3.1ve......
  • TiDB Vector 抢先体验之用 TiDB 实现以图搜图
    本文首发自TiDB社区专栏:https://tidb.net/blog/0c5672b9转载请注明出处!前言最早知道TiDB要支持向量化的消息应该是在23年10月份左右,到第一次见到TiDBVector的样子是在今年1月初,当时dongxu在朋友圈发了一张图:去年我研究了一段时间的向量数据库,一直对TiDB向量特性......
  • 标量码与矢量码(Scalar code & Vector code)及一些后续知识
    标量码每一个码字在每一个节点上包含一个字节,向量码在每一个节点上包含若干字节,共同组合为一个超字节(superbyte),不同节点上的超字节共同组成一个码字。上面这个图是标量码,下面的是矢量码。用俗话说,标量码存的最小单位是一个数字,而矢量码存的最小单位是一个向量(下面这个图存的是向......