C++教程-在C++中初始化Vector
在C++中初始化Vector
Vector可以存储多个数据值,类似于数组,但它们只能存储对象引用,而不能存储基本数据类型。它们存储对象的引用意味着它们指向包含数据的对象,而不是直接存储数据。与数组不同,向量不需要初始化大小。它们可以根据对象引用的数量自由调整大小,这是因为它们的存储由容器自动处理。容器将保留用于分配存储空间的alloc的内部副本,以便存储其整个生命周期。向量可以使用迭代器进行定位和遍历,因此它们被放置在连续的存储空间中。向量还具有安全功能,可以避免程序崩溃,而数组则没有这个特性。我们可以为向量提供保留空间,但不能为数组提供。数组不是一个类,但向量是一个类。在向量中,可以删除元素,但在数组中不能。
使用父类“Collection class”,向量以模板类的形式发送。数组是具有特定属性的较低级别数据结构。向量具有函数和构造函数,它们不是基于索引的。它们与以索引为基础的数组相反。在这里,最低地址提供给第一个元素,最高地址提供给最后一个元素。向量用于插入和删除对象,而数组用于频繁访问对象。数组是节省内存的数据结构,而向量为了管理存储并动态增长而使用了更多的内存。向量访问元素需要更多的时间,但这不适用于数组。
有四种初始化C++中的向量的方法:
- 逐个输入值
- 使用向量类的重载构造函数
- 使用数组的帮助
- 使用另一个已初始化的向量
逐个输入值 -
可以使用向量类的push_back()方法逐个插入向量中的所有元素。
算法
开始
声明一个向量变量v。
然后调用push_back()函数,这样可以将值插入到向量v中。
然后打印"Vector elements: "。
对于(int a: v),
打印变量a的所有元素。
代码 -
#include <iostream>
#include <vector>
using namespace std; int main()
{
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
vec.push_back(6);
vec.push_back(7);
vec.push_back(8);
vec.push_back(9);
vec.push_back(101);
for (int i = 0; i < vec.size();
i++)
{
cout << vec[i] << " ";
}
return 0;
}
输出
使用重载构造函数 -
当向量具有多个具有相同值的元素时,我们使用此方法。
使用向量类的重载构造函数 -
此方法主要用于向量填充具有相同值的多个元素时。
算法
开始
首先,我们初始化一个变量s。
然后,我们使用大小's'创建一个向量v。
然后初始化向量v1。
然后使用v1初始化v2。
然后我们打印元素。
结束。
代码 -
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int elements = 12;
vector<int> vec(elements, 8);
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
return 0;
}
输出
8
8
8
8
8
8
8
8
8
8
8
8
通过数组的帮助 -
将一个数组传递给向量类的构造函数。数组包含将填充向量的元素。
算法 -
开始
首先,我们创建一个向量v。
然后,我们初始化向量。
最后,打印元素。
结束。
代码 -
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vectr{9,8,7,6,5,4,3,2,1,0};
for (int i = 0; i < vectr.size(); i++)
{ cout << vectr[i] << " ";
}
return 0;
}
输出
9
8
7
6
5
4
3
2
1
0
使用另一个已初始化的向量 -
在此方法中,我们需要将已初始化向量的begin()和end()迭代器传递给向量类的构造函数。然后我们初始化一个新向量并用旧向量填充它。
算法 -
开始
首先,我们创建一个向量v1。
然后,我们用一个数组初始化向量v1。
然后我们通过v1初始化向量v2。
我们要打印元素。
结束。
代码 -
#include <iostream>
#include <vector>
using namespace std;
int main()
{ vector<int> vec_1{1,2,3,4,5,6,7,8};
vector<int> vec_2(vec_1.begin(), vec_1.end());
for (int i = 0; i < vec_2.size(); i++)
{
cout << vec_2[i] << " ";
}
return 0;
}
输出
1
2
3
4
5
6
7
8