如何在C++中初始化向量[6种不同方法] | Simplilearn

157 阅读10分钟

Simplilearn - Online Certification Training Course Provider

所有课程

登录

软件开发

数据科学与商业分析AI与机器学习项目管理网络安全云计算DevOps业务与领导力质量管理软件开发敏捷与ScrumIT服务与架构数字营销大数据职业快速通道企业其他部分

文章电子书免费练习测试按需网络研讨会视频教程现场网络研讨会

首页资源软件开发如何在C++中初始化向量[6种不同的方法]。

现在的趋势

[

顶尖的系统设计面试问题,帮助你破解你的梦想工作

文章

](www.simplilearn.com/system-desi…

最重要的ETL测试面试问题和答案

文章

](www.simplilearn.com/etl-testing…

区块链职业指南。成为一名区块链开发者的综合游戏手册

电子书

](www.simplilearn.com/blockchain-…

常见的PL/SQL面试问题和答案

文章

](www.simplilearn.com/pl-sql-inte…

Adobe的面试过程是怎样的?

文章

](www.simplilearn.com/adobe-inter…

什么是NFT的终极指南?

视频教程

](www.simplilearn.com/tutorials/b…

2022年需要学习的最佳编程语言

文章

](www.simplilearn.com/best-progra…

列表到字符串在Python中的应用

文章

](www.simplilearn.com/tutorials/p…

软件开发大师班。设计以消费者为导向的应用程序

网络研讨会

](www.simplilearn.com/software-de…

AngularJS Vs. Angular 2 Vs. Angular 4:了解它们的区别

文章

](www.simplilearn.com/angularjs-v…)

如何在C++中初始化矢量[6种不同的方法]

作者:Simplilearn最后更新于2022年6月24日25448

How to Initialize a Vector in C++ [6 Different Ways]

目录

查看更多

什么是C++中的向量?

矢量是STL容器,用于动态存储数据。它们也被认为是数组的动态表示,能够根据元素的插入和删除自动增加或减少其大小。就像它的静态对应物一样,它只能在一个索引上存储一个实体。插入和删除的过程都是从最后一个索引到第一个索引进行的。虽然删除需要一个恒定的时间,但插入一个元素可能需要不同的时间,因为向量在添加元素后必须调整自己的大小。

就像其他STL容器一样,向量类也为你提供了各种成员函数。这些函数属于三个子类别。

  • 迭代器
  • 容量
  • 修改器

1.迭代器。迭代器函数是那些允许你在向量容器中进行迭代或移动的函数。以下是C++矢量所提供的迭代器类型。

begin(), end(), rbegin(), rend(), cbegin(), cend(), crbegin(), crend()。

2.2.容量。 C++向量的这些成员函数处理向量容器的大小和容量。以下是C++向量提供的容量类型。

size(), max_size(), capacity(), resize(n), empty(), shrink_to_fit(), reserve()。

3.3.修改器。修改器函数是修改向量容器的函数,如删除一个元素、删除等。以下是C++向量提供的修改器的类型。

assign(), push_back(), pop_back(), insert(), erase(), swap(), clear(), emplace(), emplace_back()。

语法

在C++中声明一个向量的语法是。

vector vector_name(size)

语法的描述

  • 关键字 "vector"。为了在C++中声明一个向量,在开头提供了关键词 "向量"。
  • type。这个参数是要存储在向量中的元素的数据类型。
  • vector_name:这是用户指定的向量的变量名称。
  • size。这是一个可选的参数,用于指定向量的大小。

矢量的例子

下面的程序检查向量是否包含重复的元素。如果它包含重复的元素,则返回真,否则,返回假。

#include<bits/stdc++.h>

using namespace std;

//函数用于检查向量中是否

//是否包含重复的元素

bool containsDuplicate(vector& nums)

{

//检查向量是否为空

如果(nums.empty())

返回false。

//对该向量进行排序

sort(nums.begin(), nums.end())。

int i = 0;

int j = i+1;

while(j<nums.size())

{

//检查当前元素是否

//不等于其继承者

if(nums[i] != nums[j])

{

i++;

j++;

}

否则

返回true。

}

return false;

}

int main()

{

向量 nums{ 2, 3, 5, 1, 2, 4 }。

//打印向量元素

cout <<"向量元素是"。

for (int x : nums)

cout << x << " "。

cout <<endl;

//打印结果

如果(containsDuplicate(nums))

cout <<"向量包含一个重复的元素"。

否则

cout <<"向量不包含重复的元素"。

}

Initialize_Vector_In_C_Plus_Plus_1

在上面描述的程序中,重复函数检查向量中是否有重复的元素。如果向量是空的,该函数返回false,因为空向量不可能包含重复的元素。如果元素不是空的,你需要对向量进行排序,使所有重复的元素与它们的原始元素相对应地重新排序。之后,你需要遍历该向量,检查两个连续的元素是否相等。如果是这样,该函数返回真,否则,返回语句为假。

还请阅读。C++函数。语法、类型和调用方法

免费的Java认证培训

以前所未有的方式学习Java的A-Z现在报名

FREE Java Certification Training

在C++中初始化一个向量

C++中的向量存储的是对象的引用,而不是直接存储数据。这些对象可以是任何数据类型,如整数、字符、字符串等。与像数组这样的静态容器不同,向量不需要用大小来初始化。你可以在不定义容器大小的情况下初始化一个向量,因为它可以动态地增加和减少其大小。

你可以用6种不同的方法来初始化向量,现在你将在下一节详细探讨这些方法。这6种方式是:。

  • 使用push_back()方法将数值推入向量。
  • 使用重载构造函数。
  • 将一个数组传递给向量构造函数。
  • 使用一个现有的数组。
  • 使用一个现有的向量。
  • 使用fill()方法。

同时阅读:C++中的类和对象介绍

在C++中初始化向量的方法

以下是在C++中初始化向量的不同方法。

  • 使用push_back()方法向向量中推送数值

类向量的push_back()方法是用来将元素推入或插入向量的。它在向量的末尾插入每个新元素,向量的大小增加1。

语法

vector_name.push_back(data)

vector_name是向量的名称。push_back()方法接受一个元素,并将其插入到矢量的末尾。

例子

考虑一个向量v1。

输入:v1.push_back(100)

v1.push_back(200)

v1.push_back(300)

输出。结果向量是。

100 200 300,大小为3。

输入:v1.push_back(1)

v1.push_back(2)

输出。结果的向量是。

100 200 300 1 2,大小为5。

下面的程序说明了如何使用push_back()方法在C++中初始化一个向量。

#include <iostream

#include

使用命名空间std;

int main() {

// 声明一个向量

vector v1;

// 使用 push_back() 来初始化向量

v1.push_back(100);

v1.push_back(200);

v1.push_back(300);

v1.push_back(1);

v1.push_back(2)。

cout << "向量中的元素是:\n"。

// 遍历向量

for (int i = 0; i < v1.size(); i++)

{

// 打印向量元素

cout << v1[i] << " "。

}

返回0。

}

Initialize_Vector_In_C_Plus_Plus_2

步骤

  1. 声明一个向量v1。
  2. 使用push_back()方法初始化该向量。逐个插入向量元素
  3. 遍历向量
  4. 打印向量元素
  • 使用重载构造函数

重载构造函数也可以用来在C++中初始化向量。这个构造函数接受两个参数。向量的大小和要插入的值是在初始化向量时提供的。提供的值将被多次插入到向量中(等于提供的向量大小)。

语法

vector vector_name(size, data)

参数size是要插入到向量中的元素数量(或者简单说是向量的大小),data是要插入的值。

还可以阅读。C++中的构造器。构造函数综合指南

例子

输入:vector v1(5, 2)

输出。得到的向量将是。

2 2 2 2 2

输入:向量 v2(4, 1)

輸出。产生的向量将是。

1 1 1 1

下面的程序说明了如何使用重载构造函数在C++中初始化一个向量。

#include #

#include ; #include

使用命名空间std;

int main()

{

//初始化大小

int size = 5;

// 使用重载构造函数初始化向量

vector v1(size, 2);

// 打印向量元素

cout << "向量v1是。\n";

for (int i = 0; i < v1.size(); i++)

{

cout << v1[i] << " "。

}

cout << "\n";

//初始化向量v2

vector v2(4, 1);

//打印向量v2的元素

cout << "\n向量v2是。\n";

for (int i = 0; i < v2.size(); i++)

{

cout << v2[i] << ""。

}

cout << "\n\n";

返回0。

}

Initialize_Vector_In_C_Plus_Plus_3.

步骤

  1. 初始化向量的大小
  2. 使用重载构造函数初始化向量,指定大小和要插入的值
  3. 遍历向量
  4. 打印向量元素
  • 给向量构造函数传递一个数组

另一种在C++中初始化向量的方法是向向量类构造函数传递一个元素数组。数组元素将以相同的顺序插入到向量中,向量的大小将被自动调整。

语法

vector vector_name{array of elements}(向量类型)。

你在初始化的时候把元素数组传给向量。

例子

输入:vector v1{10, 20, 30, 40, 50}。

输出。得到的向量将是。

10 20 30 40 50

输入:向量 v2{'a', 'b', 'c', 'd', 'e'}。

输出。得到的向量将是。

a b c d e

下面的程序说明了如何在C++中通过向向量类构造函数传递一个数组来初始化一个向量。

#include <iostream

#include <vector

使用命名空间std;

int main()

{

//传递一个整数数组来初始化向量

vector v1{10, 20, 30, 40, 50};

// 打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v1.size(); i++)

{

cout << v1[i] << " "。

}

cout << "\n\n";

//传递一个字符数组来初始化向量

vector v2{'a', 'b', 'c', 'd', 'e'};

//打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v2.size(); i++)

{

cout << v2[i] << " "。

}

cout << "\n\n";

返回0。

}

Initialize_Vector_In_C_Plus_Plus_4.

步骤

  1. 声明一个向量
  2. 初始化向量。传递一个元素数组给向量类构造函数
  3. 遍历向量
  4. 打印向量元素
  • 使用一个现有的数组

这是C++中优雅地初始化向量的最标准方法之一。你可以通过使用一个已经定义好的数组来初始化一个向量。你需要将数组中的元素传递给向量类的迭代器构造函数。

还可以阅读:C++中的迭代器。迭代器的终极指南

语法

data_type array_name[n] = {1,2,3};

vector<data_type> vector_name(arr, arr + n)

大小为n的数组被传递给向量类的迭代器构造函数。

例子

输入:int a1[5] = {10, 20, 30, 40, 50}。

vector v1(a1, a1 + 5)

输出。产生的向量将是。

10 20 30 40 50

输入:char a2[5] = {'a', 'b', 'c', 'd', 'e'}

向量 v2(a2, a2 + 5)

输出。得到的向量将是。

a b c d e

下面的程序说明了如何在C++中向向量类的迭代器构造器传递一个现有的数组来初始化一个向量。

#include <iostream

#include

使用命名空间std;

int main()

{

//初始化一个整数的数组

int a1[5] = {10, 20, 30, 40, 50};

// 初始化向量

vector v1(a1, a1 + 5);

//打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v1.size(); i++)

{

cout << v1[i] << " "。

}

cout << "\n\n";

//初始化一个char数组

char a2[5] = {'a', 'b', 'c', 'd', 'e'};

vector v2(a2, a2 + 5)。

//打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v2.size(); i++)

{

cout << v2[i] << " "。

}

cout << "\n\n";

返回0。

}

Initialize_Vector_In_C_Plus_Plus_5.

全栈网络开发课程

成为MEAN Stack的专家查看课程

Full Stack Web Developer Course

操作步骤

  1. 初始化一个数组
  2. 将数组传递给向量类的迭代器构造函数,以初始化向量
  3. 遍历向量
  4. 打印向量元素
  • 使用一个现有的向量

向量类的范围构造函数也可以用来初始化一个向量。你将现有向量的迭代器传递给构造函数,以指定要插入新向量的元素范围。

语法

vector vector_name(iterator_first, iterator_last)

这里,你必须将指向现有向量的迭代器传递给构造函数,以初始化新向量。处于作为参数传递的范围内的元素被插入到新的向量中。

例子

输入:向量 v1{10, 20, 30, 40, 50}。

vector v2(v1.begin(), v1.end())

输出。得到的向量将是。

10 20 30 40 50

输入:向量 v1{10, 20, 30, 40, 50}。

vector v2(v1.begin(), v1.begin() + 3)

输出。得到的向量将是。

10 20 30

下面的程序说明了如何使用现有的向量在C++中初始化一个向量。

#include <iostream

#include

使用命名空间std;

int main()

{

//初始化一个向量

vector v1{10, 20, 30, 40, 50};

// 使用范围构造函数初始化向量

vector v2(v1.begin(), v1.end())。

向量 v3(v1.begin(), v1.begin() + 3)。

//打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v2.size(); i++)

{

cout << v2[i] << " "。

}

cout << "\n\n";

// 打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v3.size(); i++)

{

cout << v3[i] << " "。

}

cout << "\n\n";

返回0。

}

Initialize_Vector_In_C_Plus_Plus_6

操作步骤

  1. 使用上面讨论的任何方法初始化一个向量
  2. 将该向量的迭代器(指定范围)传递给新向量的范围构造函数
  3. 遍历该向量
  4. 打印向量的元素
  • 使用fill()方法

fill()函数,顾名思义,将指定范围内的所有元素填充或赋值给指定的值。这个方法也可以用来在C++中初始化向量。

语法

fill(begin, end, value)

fill()函数接受三个参数begin和end迭代器的范围和要填充的值。迭代器begin包含在范围内,而迭代器end则不包含在内。

例子

考虑大小为5的向量v1和v2。

输入:fill(v1.begin(), v1.end(), 6)

输出。得到的向量将是。

6 6 6 6 6

输入:fill(v2.begin() + 2, v2.begin() + 4, 6)

输出。得到的向量将是。

0 0 6 6 0

下面的程序说明了如何使用fill()函数在C++中初始化一个向量。

#include <iostream

#include

使用命名空间std;

int main()

{

// 声明一个向量

vector v1(5);

// 使用fill()方法初始化该向量

fill(v1.begin(), v1.end(), 6)。

// 声明另一个向量

vector v2(5);

//初始化v2

fill(v2.begin() + 2, v2.begin() + 4, 6);

// 打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v1.size(); i++)

{

cout << v1[i] << " "。

}

cout << "\n\n";

//打印向量元素

cout << "向量元素是。\n";

for (int i = 0; i < v2.size(); i++)

{

cout << v2[i] << " "。

}

cout << "\n\n";

返回0。

}

Initialize_Vector_In_C_Plus_Plus_7

步骤

  1. 声明一个向量
  2. 将范围和值传递给fill()函数以初始化向量
  3. 遍历该向量
  4. 打印矢量元素

最后的感想!

这篇文章让你了解了c++中向量的来龙去脉以及如何初始化它们。你看了一些常见的向量的例子和六种不同的初始化向量的方法。举例来说,你可以使用push_back()方法初始化向量,使用重载构造函数、现有数组或向量,使用fill()方法等等。你看了所有这些初始化向量的方法的步骤和例子。

如果你想了解更多关于C++编程语言的基本概念,你可以查看Simplilearn的C++编程初学者指南。

你也可以通过我们的全栈网络开发课程,对全栈软件开发中使用的技术有一个完整的概述。本课程由行业专家讲授,它将带领您了解一些最流行的技术,如DevOps、Agile、AWS、Java、HTML等。

你也应该看看我们精心制作的一些免费在线课程

如果你对我们有任何疑问或建议,请在评论框中提及,我们的专家会尽快为你解答。

学习愉快!

关于作者

Simplilearn聪明的学习

Simplilearn是世界领先的数字营销、云计算、项目管理、数据科学、IT、软件开发和其他许多新兴技术的在线培训供应商之一。

查看更多

推荐课程

[

Full Stack Web Developer - MEAN Stack

全栈网络开发员--MEAN Stack

944名学员

终身访问*。

](www.simplilearn.com/full-stack-…

Post Graduate Program in Full Stack Web Development

全栈式网络开发的研究生课程

3330名学员

终身访问*

](www.simplilearn.com/pgp-full-st…)

*终身访问高质量、自定进度的电子学习内容。

探索类别

在这些城市寻找Full Stack Web Developer - MEAN Stack的硕士课程

在亚特兰大的MeanStack Developer课程在奥斯汀的Mean Stack Developer课程在夏洛特的Mean Stack Developer课程在芝加哥的MeanStack Developer课程休斯顿的FullStack Web Developer - MEAN Stack在洛杉矶的MeanStack Developer课程在纽约的MeanStack Developer课程在旧金山的MeanStack Developer课程在坦帕的Mean Stack Developer课程在华盛顿的Mean Stack Developer课程

[

A Comprehensive Look Into the C++ Pair Container下一篇

全面了解C++对容器

由Simplilearn提供

4950Jun3, 2021

](www.simplilearn.com/tutorials/c…)

推荐资源

上一页下一页

© 2009 -2022- Simplilearn Solutions

关注我们!

推荐和赚取

公司介绍

关于我们工作机会 媒体报道 校友发言联系我们

与我们一起工作

成为讲师作为嘉宾发表博客

发现问题

SkillupSkillup网站地图资源RSSfeedSimplilearn优惠券和折扣优惠城市地图

为企业服务

企业培训合作伙伴数字转型政府

在旅途中学习!

获取安卓应用获取iOS应用

流行的研究生课程

项目管理认证课程|网络安全认证课程|数据科学PG课程|数据分析训练营课程|商业分析认证课程|数字营销认证课程|精益六西格玛认证课程|云计算认证课程|数据工程训练营|AI和机器学习课程|全栈网络开发课程

流行的硕士课程

PMP Plus认证培训课程|大数据工程课程|数据科学认证课程|数据分析师认证课程|人工智能课程|云架构师认证培训课程|DevOps工程师认证培训课程|高级数字营销课程|网络安全专家课程|MEAN栈开发课程

潮流课程

PMP认证培训课程|大数据Hadoop认证培训课程|Python数据科学认证课程|机器学习认证课程|AWS解决方案架构师认证培训课程|CISSP认证培训|认证ScrumMaster(CSM)认证培训|ITIL 4基础认证培训课程|Java认证课程|Python认证培训课程

潮流资源

Python教程|JavaScript教程|Java教程|Angular教程|Node.js教程|Docker教程|Git教程|Kubernetes教程|Power BI教程|CSS教程

smpl_2022-06-24

  • 免责声明
  • PMP、PMI、PMBOK、CAPM、PgMP、PfMP、ACP、PBA、RMP、SP和OPM3是美国项目管理协会的注册商标。