所有课程
登录
软件开发
数据科学与商业分析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
目录
查看更多
什么是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 <<"向量不包含重复的元素"。
}
在上面描述的程序中,重复函数检查向量中是否有重复的元素。如果向量是空的,该函数返回false,因为空向量不可能包含重复的元素。如果元素不是空的,你需要对向量进行排序,使所有重复的元素与它们的原始元素相对应地重新排序。之后,你需要遍历该向量,检查两个连续的元素是否相等。如果是这样,该函数返回真,否则,返回语句为假。
还请阅读。C++函数。语法、类型和调用方法
免费的Java认证培训
以前所未有的方式学习Java的A-Z现在报名
在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。
}
步骤
- 声明一个向量v1。
- 使用push_back()方法初始化该向量。逐个插入向量元素
- 遍历向量
- 打印向量元素
-
使用重载构造函数
重载构造函数也可以用来在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。
}
步骤
- 初始化向量的大小
- 使用重载构造函数初始化向量,指定大小和要插入的值
- 遍历向量
- 打印向量元素
-
给向量构造函数传递一个数组
另一种在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。
}
步骤
- 声明一个向量
- 初始化向量。传递一个元素数组给向量类构造函数
- 遍历向量
- 打印向量元素
-
使用一个现有的数组
这是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。
}
全栈网络开发课程
成为MEAN Stack的专家查看课程
操作步骤
- 初始化一个数组
- 将数组传递给向量类的迭代器构造函数,以初始化向量
- 遍历向量
- 打印向量元素
-
使用一个现有的向量
向量类的范围构造函数也可以用来初始化一个向量。你将现有向量的迭代器传递给构造函数,以指定要插入新向量的元素范围。
语法
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。
}
操作步骤
- 使用上面讨论的任何方法初始化一个向量
- 将该向量的迭代器(指定范围)传递给新向量的范围构造函数
- 遍历该向量
- 打印向量的元素
-
使用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。
}
步骤
- 声明一个向量
- 将范围和值传递给fill()函数以初始化向量
- 遍历该向量
- 打印矢量元素
最后的感想!
这篇文章让你了解了c++中向量的来龙去脉以及如何初始化它们。你看了一些常见的向量的例子和六种不同的初始化向量的方法。举例来说,你可以使用push_back()方法初始化向量,使用重载构造函数、现有数组或向量,使用fill()方法等等。你看了所有这些初始化向量的方法的步骤和例子。
如果你想了解更多关于C++编程语言的基本概念,你可以查看Simplilearn的C++编程初学者指南。
你也可以通过我们的全栈网络开发课程,对全栈软件开发中使用的技术有一个完整的概述。本课程由行业专家讲授,它将带领您了解一些最流行的技术,如DevOps、Agile、AWS、Java、HTML等。
你也应该看看我们精心制作的一些免费在线课程。
如果你对我们有任何疑问或建议,请在评论框中提及,我们的专家会尽快为你解答。
学习愉快!
关于作者
Simplilearn是世界领先的数字营销、云计算、项目管理、数据科学、IT、软件开发和其他许多新兴技术的在线培训供应商之一。
查看更多
推荐课程
[
全栈网络开发员--MEAN Stack
944名学员
终身访问*。
](www.simplilearn.com/full-stack-…
全栈式网络开发的研究生课程
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课程
[
下一篇
全面了解C++对容器
由Simplilearn提供
4950Jun3, 2021
](www.simplilearn.com/tutorials/c…)
推荐资源
-
[
免费电子书。Salesforce 开发人员薪资报告Ebook
-
[
阵列在C++中的
-
[
你需要知道的关于C++矢量的一切
-
[
伦理黑客入门综合指南》电子书
-
[
全面了解C++的Lambda表达式文章
-
[
了解C++阵列的简易指南
上一页下一页
© 2009 -2022- Simplilearn Solutions
关注我们!
公司介绍
与我们一起工作
发现问题
SkillupSkillup网站地图资源RSSfeedSimplilearn优惠券和折扣优惠城市地图
为企业服务
在旅途中学习!
流行的研究生课程
项目管理认证课程|网络安全认证课程|数据科学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是美国项目管理协会的注册商标。