在 C++ 中初始化二维向量
这个简短的编程教程是关于在 C++ 中使用 2D 向量的。
在进入二维向量之前,我们将首先快速介绍向量及其在 C++ 中的使用。然后,我们将继续讨论多维向量及其使用。
C++ 中的向量
向量的作用与动态数组完全一样,具有在插入或删除元素时自动调整自身大小的附加功能。向量可以存储同质元素(即相似数据类型的元素)。
向量可以通过添加和删除自动调整其容器或存储的大小。
向量的所有成员都存储在内存中。每个下一个元素都与前一个元素相邻,因此可以通过迭代器轻松访问它。
当添加一个新元素时,它被放置在最后,并且每次插入需要不同的时间,因为它首先检查内存是否可用。如果内存不可用,它首先分配一些新内存,然后将元素插入向量中。
另一方面,从最后一个元素移除一个元素需要恒定的时间,因为它不会在每次移除时执行调整大小。
在 C++ 中初始化向量
我们在 C++ 标准模板库 (STL) 中有向量库文件。因此,要使用向量,我们需要为其包含所需的头文件,如下所示:
#include <vector>
要声明向量,请遵循以下语法:
vector<int> v1;
请注意,我们不需要指定向量的大小,因为向量可以在需要时动态自动增长其大小。我们可以使用初始化列表或统一初始化来初始化向量。
这两种方法在下面的示例中进行了演示:
vector<int> vec1 = {21,22,23,24,25}; //initializer list method
vector<int> vec2 {21,22,23,24,25}; // uniform initialization
如果我们想用相同的值填充整个向量,还有另一种初始化向量的方法。如下所示:
vector<int> vec3(4,11);
这将初始化一个大小为 4
的向量,所有元素的值将是 11
,如下所示:{11,11,11,11}
。
此外,如果我们在声明向量时没有在向量中输入数据,我们可以稍后使用函数 push_back
添加它。这个函数的语法是:
vec1.push_back(value);
这将插入该值作为向量的最后一个元素。
在 C++ 中访问向量的值
向量中有一些迭代方法。
函数 | 目的 |
---|---|
begin() |
该函数返回一个指向向量第一个元素的迭代器指针。 |
end() |
这个函数返回一个指向向量最后一个元素的迭代器指针。 |
size() |
此函数返回向量的总大小,这意味着有多少元素。 |
at(p) |
该函数返回指向向量中位置 p 处元素的指针。 |
empty() |
此函数检查向量是否为空。 |
以下代码片段演示了这些功能:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec1;
for (int j = 1; j <= 5; j++)
vec1.push_back(j+1);
cout << "Size: " << vec1.size()<<endl;
cout << "Output of begin and end functions: ";
for (auto a = vec1.begin(); a != vec1.end(); ++a)
cout << *a << " ";
cout<<endl;
cout<<"Element at position 3: "<<vec1.at(3)<<endl;
return 0;
}
输出:
Size: 5
Output of begin and end functions: 2 3 4 5 6
Element at position 3: 5
在 C++ 中初始化二维向量
与二维数组一样,二维向量也是向量的向量。这样一个向量的每个元素都是一个向量本身。
就像在 Java 锯齿状数组中一样,我们可以在 2D 向量的每个位置都有一个多尺寸向量。这就像一个具有一定数量的行和列的矩阵。
不同之处在于它可以在每行中具有可变数量的列。
声明语法:
vector<vector<int>> vec1 {{1, 1, 0}, {0, 2}, {2, 1, 3}};
因为它是一个二维结构,我们需要两个循环来遍历这个向量——一个循环遍历行,内循环遍历列。
for(int a=0;a<vec1.size();a++){
for(int b=0;b<vec1[a].size();b++)
cout<<v1[a][b]<<" ";
确保 size()
函数不返回向量中的元素总数。相反,它返回此向量中的向量总数。
我们还可以通过指定行数和列数来初始化这个向量,如下所示:
int rows = 3;
int columns = 4;
vector<vector<int>> vec1( rows , vector<int> (columns));
让我们看看创建二维向量的完整代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int rows = 3;
int columns = 4;
vector<vector<int>> vec( rows , vector<int> (columns));
for(int a = 0; a < rows; a++) //loop for initializing the vector
{
for(int b = 0; b < columns; b++)
{
vec[a][b] = a*b;
}
cout<< endl;
}
for(int a = 0; a < rows; a++) //loop for displaying the values of vector
{
for(int b = 0; b < columns; b++)
{
cout << vec[a][b] << " ";
}
cout<< endl;
}
return 0;
}
输出:
0 0 0 0
0 1 2 3
0 2 4 6
相关文章
在 C++ 中通过掷骰子生成随机值
发布时间:2023/04/09 浏览次数:169 分类:C++
-
本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。
在 C++ 中使用模板的链表
发布时间:2023/04/09 浏览次数:158 分类:C++
-
本文解释了使用模板在 C++ 中创建链表所涉及的各个步骤。工作程序演示了一个链表,该链表使用模板来避免在创建新变量时声明数据类型的需要。
在 C++ 中添加定时延迟
发布时间:2023/04/09 浏览次数:142 分类:C++
-
本教程将为你提供有关在 C++ 程序中添加定时延迟的简要指南。这可以使用 C++ 库为我们提供的一些函数以多种方式完成。
在 C++ 中创建查找表
发布时间:2023/04/09 浏览次数:155 分类:C++
-
本文重点介绍如何创建查找表及其在不同场景中的用途。提供了三个代码示例以使理解更容易,并附有代码片段以详细了解代码。
如何在 C++ 中把字符串转换为小写
发布时间:2023/04/09 浏览次数:63 分类:C++
-
介绍了如何将 C++ std::string 转换为小写的方法。当我们在考虑 C++ 中的字符串转换方法时,首先要问自己的是我的输入字符串有什么样的编码
如何在 C++ 中确定一个字符串是否是数字
发布时间:2023/04/09 浏览次数:163 分类:C++
-
本文介绍了如何检查给定的 C++ 字符串是否是数字。在我们深入研究之前,需要注意的是,以下方法只与单字节字符串和十进制整数兼容。
如何在 c++ 中查找字符串中的子字符串
发布时间:2023/04/09 浏览次数:65 分类:C++
-
本文介绍了在 C++ 中检查一个字符串是否包含子字符串的多种方法。使用 find 方法在 C++ 中查找字符串中的子字符串
如何在 C++ 中把字符串转换为 Char 数组
发布时间:2023/04/09 浏览次数:107 分类:C++
-
本文介绍了在 C++ 中把字符串转换为 char 数组的多种方法。使用 std::basic_string::c_str 方法将字符串转换为 char 数组