c++ vector 初始化_C++--vector()的用法

article/2025/8/28 19:35:03

vector()的用法
概念
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:

#include<vector>;

一、vector的初始化

(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。

测试

#include<iostream>
#include<math.h>
#include<vector>
using namespace std;int main()
{
vector<int> a(10);for(int i=0;i<a.size();i++)
cout<<a[i]<<" ";
return 0;
}

结果:(感觉默认生成为0)
在这里插入图片描述

2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1

测试

#include<iostream>
#include<math.h>
#include<vector>
using namespace std;int main()
{
vector<int> a(10,1);for(int i=0;i<a.size();i++)
cout<<a[i]<<" ";
return 0;
}

结果
在这里插入图片描述

3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值

测试:

#include<iostream>
#include<math.h>
#include<vector>
using namespace std;int main()
{
vector<int> b(10,3);
vector<int> a(b);for(int i=0;i<a.size();i++)
cout<<a[i]<<" ";
return 0;
}

结果:
在这里插入图片描述
测试:

#include<iostream>
#include<math.h>
#include<vector>
using namespace std;int main()
{
vector<int> b;
for(int i=0;i<10;i++)
b.push_back(i);
vector<int> a(b.begin(),b.begin()+3); //定义了a值为b中第0个到第2个(共3个)元素for( i=0;i<a.size();i++)
cout<<a[i]<<" ";
return 0;
}

结果:
在这里插入图片描述

5int b[7]={1,2,3,4,5,9,8};vector<int> a(b,b+7); //从数组中获得初值 从b开始 一共7个

测试:

#include<iostream>
#include<math.h>
#include<vector>
using namespace std;int main()
{int b[7]={1,2,3,4,5,6,7};vector<int> a(b,b+7); //从数组中获得初值 从b开始 一共7个!!!!for( int i=0;i<a.size();i++)
cout<<a[i]<<" ";
return 0;
}

结果:
在这里插入图片描述
二、vector对象的几个重要操作,举例说明如下:

1)a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a2)a.assign(4,2); //是a只含4个元素,且每个元素为23)a.back(); //返回a的最后一个元素4)a.front(); //返回a的第一个元素5)a[i]; //返回a的第i个元素,当且仅当a[i]存在6)a.clear(); //清空a中的元素7)a.empty(); //判断a是否为空,空则返回ture,不空则返回false8)a.pop_back(); //删除a向量的最后一个元素9)a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+         3(不包括它)10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为511)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,412)a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为513)a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8         ,插入元素后为1,4,5,9,2,3,4,5,9,814)a.size(); //返回a中元素的个数;15)a.capacity(); //返回a在内存中总共可以容纳的元素个数16)a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机17)a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为218)a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才         显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能) 19)a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

三、顺序访问vector的几种方式,举例说明如下:

(1)向向量a中添加元素

1、利用push_back()

vector<int> a;for(int i=0;i<10;i++)a.push_back(i);

2、也可以从数组中选择元素向向量中添加

int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);

3、也可以从现有向量中选择元素向向量中添加

int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
b.push_back(*it);

4、也可以从文件中读取元素向向量中添加

ifstream in("data.txt");
vector<int> a;
for(int i; in>>i)a.push_back(i);

5、【误区】

vector<int> a;
for(int i=0;i<10;i++)a[i]=i;

//这种做法以及类似的做法都是错误的。刚开始我也犯过这种错误,后来发现,下标只能用于获取已存在的元素,而现在的a[i]还是空的对象

(2)从向量中读取元素

1、通过下标方式读取

int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(int i=0;i<=b.size()-1;i++)cout<<b[i]<<" ";

2、通过遍历器方式读取

int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it=b.begin();it!=b.end();it++)cout<<*it<<" ";

四、几种重要的算法,使用时需要包含头文件:

#include<algorithm>1sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列2reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,13copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开        始复制,覆盖掉原有元素4find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置

http://chatgpt.dhexx.cn/article/XFDsHAOn.shtml

相关文章

C++中 std::vector 的6种初始化方法

1.vector<int> list1; 默认初始化&#xff0c;最常用 此时&#xff0c;vector为空&#xff0c; size为0&#xff0c;表明容器中没有元素&#xff0c;而且 capacity 也返回 0&#xff0c;意味着还没有分配内存空间。 这种初始化方式适用于元素个数未知&#xff0c;需要在…

怎样初始化二维vector

二维vector的初始化方法总结 初始化一个 二维vector,行M,列N学会用大括号初始化二维数组初始化一个 二维vector,行M,列不固定初始化一个二维vector,行列都不固定注意初始化二维vector为空时的情况leetcode例题1leetcode例题2 以定义一个二维整形数组并初始化为例&#xff1a; …

c++之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化

C二维容器vector<vector>初始化方法解析 遇到的问题&#xff1a; 在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table&#xff0c;但是不知道怎么对其进行初始化&#xff08;初始化时指定二维容器的大小&#xff09;,于是网上搜索一番&a…

打算自学一些编程,想兼职程序员打零工,想问问现在哪个程序员兼职平台单子简单,不考察接单人学历?

兼职平台接单&#xff0c;都不查学历。 等你具备最基本的可以接单的技术能力时&#xff0c;找个技术工作&#xff0c;随随便便一份都能有2000以上。但是&#xff0c;自己接单&#xff1f;实不相瞒&#xff0c;会饿死的。没有什么钱是从一开始就坐在家里轻轻松松能赚到的。除非…

有哪些适合程序员的兼职?

前言 程序员兼职的方式有多种&#xff0c;在回答题主这个问题之前&#xff0c;我们先来了解一下当前互联网行业程序员为什么会选择兼职。 为什么程序员想要兼职&#xff1f; 在别人眼中程序员那是一个高薪的职业&#xff0c;近些年来&#xff0c;越来越多的程序员想在工作之…

不得不说,这19个程序员兼职平台让我1年收入60w

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间花在…

程序员兼职十大网站

前言 今天给大家介绍几个接私活的网站&#xff0c;接私活比较辛苦&#xff0c;如果弄不好的话&#xff0c;就是纯体力的劳动&#xff0c;大家也可以尝试做兼职远程开发。需要挣个生活费的小伙伴们&#xff0c;或者在校学生想锻炼自己的&#xff0c;可以去尝试一下。以下网站仅供…

各大程序员兼职平台靠谱嘛?这一篇文章就够了

搜索”程序员兼职“&#xff0c;能搜索到一堆营销软文&#xff0c;无非也就是你抄我&#xff0c;我抄你&#xff0c;换换顺序&#xff0c;今天我们不光谈优点&#xff0c;特点&#xff0c;还谈谈缺点&#xff0c;和大家关心的服务费问题&#xff0c;让大家看看到底哪个平台靠谱…

程序员去哪接私活?分享10个兼职平台,人已赚麻

你们当程序员不会都拿着几千、万把块钱的死工资吧&#xff0c;今天为大家分享一些可以接私单的平台&#xff0c;我反正已经赚麻了。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&#…

Java程序员兼职平台推荐

有不少程序员兄弟时不时会私信问我&#xff0c;说自己是Java程序员&#xff0c;下班后或者是周六周末想要自己做点事情&#xff0c;有不有合适的Java兼职平台&#xff0c;在这里就做一个统一的回答&#xff1a; 平台到处都有&#xff0c;你可以找这样的平台,然后这样: 也可以找…

19个程序员兼职平台

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间…

程序员兼职网站大全

在网上收集整理了一些程序员兼职网站&#xff0c;国内外都有&#xff0c;方便大家查阅使用。 一、国内垂直众包平台 1、猿急送-程序员兼职平台&#xff1a;https://www.yuanjisong.com/ 猿急送是于15年成立&#xff0c;国内起步很早的垂直众包平台&#xff0c;目前提供的兼职…

13个最靠谱的程序员兼职平台 想接私活的赶紧看过来

作为程序员&#xff0c;你有没有想过做些兼职&#xff0c;让自己的收入翻倍&#xff1f;有没有疑惑过身边的同事是从哪里接到那些私活的&#xff1f; 看完这篇文章你就能找到答案&#xff01; 其实网上有不少给程序员提供兼职的平台&#xff0c;老K根据自己和身边朋友的经验&a…

程序员兼职接私活平台大全,兼职也能月薪上万

前言 PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 &#x1f449;[[CSDN大礼包&#xff1a;《python兼职资源&全套学习资料》免费分享]]&#xff08;安全链接&#xff0c;放心点击&#xff09; 根据我们的经验&#xff0c;程序员兼职主要分为…

10个程序员可以接私活的平台和一些建议,兼职必看

今天为大家分享一些可以接私单的平台&#xff0c;相信大家学习编程未来是希望成为一个软件工程师或者码农&#xff0c;找到好的工作&#xff0c;有好的发展。 但是在还没有找工作之前&#xff0c;大家可以通过一些平台接一些兼职&#xff0c;一来能够赚钱&#xff0c;在主页保…

程序员接单必看的五个平台,最后一个赚麻了

当大多数程序员还拿着万把块钱的死工资时&#xff0c;有些人已经自己接私活赚麻了&#xff0c;今天为大家分享一些可以接私单的平台。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&…

linux 查看版本的命令

1、通过 cat /proc/version 、uname 2、通过cat /etc/issue 、cat /etc/redhat-release 3、查看64位还是32位&#xff1a; 4、使用 file /bin/ls

Linux查看Gitlab版本

命令如下&#xff1a; cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

Linux系列之查看CentOS版本

文章の目录 写在最后 使用命令 [rootVM-4-12-centos local]# cat /etc/centos-release返回的结果如下图&#xff1a; 我这里的版本是CentOS7。 写在最后 如果你感觉文章不咋地//(ㄒoㄒ)//&#xff0c;就在评论处留言&#xff0c;作者继续改进&#xff1b;o_O??? 如果你觉得…

kali linux查看版本,kali linux 系统版本的查看方法

kali linux 系统版本的查看方法 1. kali linux 系统版本查看 命令:cat /etc/issue 2. kali linux系统内核信息查看 命令:uname -a 以上这篇kali linux 系统版本的查看方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。 时间: 2019-07-08…