迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

在 C++ 中初始化二维向量

作者:迹忆客 最近更新:2023/03/23 浏览次数:

这个简短的编程教程是关于在 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:181 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:214 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:127 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便