C++中using namespace std的作用以及vector数组的使用

C++中using namespace std的作用以及vector数组的使用

本文为自我学习记录,主要包括C++中

  1. using namespace std的作用
  2. vector数组的使用

文章目录

  • C++中using namespace std的作用以及vector数组的使用
    • 一、 using namespace std
    • 二、vector数组
      • 2.1 使用 vector> 和 int s[][]定义二维数组区别
      • 2.2 vector数组的插入,删除,修改操作

一、 using namespace std

在一个最简单的helloworld的代码中,我们有使用到一行特殊的代码就是using namespace std,那为什么每次写C++代码时都需要进行使用空间说明呢?

#include 

//使用命名空间std
using namespace std;
int main(void) {
    int a=10;
    cout << "Hello, world!" << endl;
    cin >> "a= " >> a;
    return 0;
}

using namespace std:这行代码是用来告诉编译器,我们希望在代码中使用std命名空间中的标识符,而不需要在每个标识符前面加上std::前缀。

但是,并不是每个人都喜欢使用using namespace std;,因为它可能导致命名冲突,特别是当不同命名空间中的标识符具有相同的名称时。为了避免这种情况,一些人选择显式地在代码中使用std::前缀,而不是使用using namespace std;

使用空间说明是为了明确指定使用哪个命名空间中的标识符,这样可以提高代码的可读性和可维护性,特别是在大型项目中。虽然在小型项目或示例代码中使用using namespace std;可能更方便,但在实际的生产代码中,最好显式地使用命名空间说明来避免潜在的问题。

二、vector数组

使用 vector 定义一个二维数组,实际上是使用 vector 嵌套 vector 的方式来表示二维数组。这种方式有一些特性:

  1. 动态大小: 使用 vector 嵌套 vector 可以方便地实现动态大小的二维数组。即使在运行时,也可以根据需要动态调整数组的大小,而不必提前知道数组的大小。

  2. 方便的访问: 使用 vector 嵌套 vector 可以方便地通过双重索引访问数组元素。例如,对于二维数组 vector> matrix,可以使用 matrix[i][j] 来访问第 i 行第 j 列的元素。

  3. 灵活的操作: 使用 vector 嵌套 vector 可以方便地进行插入、删除、修改等操作。可以通过调整内部 vector 的大小来实现插入和删除操作,也可以直接修改元素的值。

  4. 内存管理: vector 会自动处理内存管理,包括内存的分配和释放,避免了手动管理内存的复杂性和可能出现的错误。当不再需要使用二维数组时,vector 会自动释放所占用的内存,避免内存泄漏的风险。

总的来说,使用 vector 定义二维数组具有灵活性高、易于操作和内存管理自动化等特性,使得它成为在 C++ 中表示二维数组的一种常用方式。

2.1 使用 vector 和 int s[][]定义二维数组区别

使用 vector>int s[][] 定义二维数组有一些区别:

  1. 动态大小:

    • vector>:使用 vector 嵌套 vector 定义的二维数组可以动态调整大小,即在运行时可以根据需要添加或删除行和列。
    • int s[][]:使用数组方式定义的二维数组大小是固定的,需要在定义时指定行和列的大小,无法在运行时动态调整大小。
  2. 内存管理:

    • vector>vector 会自动管理内存,包括动态分配和释放内存,避免了手动管理内存的复杂性和可能出现的错误。
    • int s[][]:使用数组方式定义的二维数组需要手动管理内存,包括内存的分配和释放。在堆上动态分配数组需要使用 newdelete,而栈上定义数组大小固定,无法动态释放内存。
  3. 访问方式:

    • vector>:可以使用双重索引方式访问数组元素,即 matrix[i][j]
    • int s[][]:同样可以使用双重索引方式访问数组元素,即 s[i][j]
  4. 复制和传递:

    • vector>:可以直接进行复制和传递,传递的是对象的副本。
    • int s[][]:无法直接进行复制和传递,传递的是指向数组的指针,需要使用指针或引用进行传递。
  5. 易用性和灵活性:

    • vector>:更灵活易用,可以方便地进行插入、删除、修改等操作。
    • int s[][]:操作起来不如 vector 方便,因为需要手动管理内存,且在定义时需要固定大小,无法动态调整。

综上所述,vector> 的方式更加灵活,易于使用和管理,尤其在需要动态调整大小和方便操作时更为方便,而使用数组方式定义的二维数组则更加静态和限制较多。

2.2 vector数组的插入,删除,修改操作

当使用 vector 定义二维数组时,经常需要进行插入、删除、修改等操作。下面我将通过示例代码来详细讲解这些操作:

#include 
#include 

using namespace std;

int main() {
    // 定义一个二维 vector 数组
    vector<vector<int>> matrix;

    // 插入操作
    // 插入一行数据 {1, 2, 3}
    matrix.push_back({1, 2, 3});
    // 插入一行数据 {4, 5, 6}
    matrix.push_back({4, 5, 6});

    // 输出当前数组
    cout << "Original matrix:" << endl;
    for (const auto& row : matrix) {
        for (int num : row) {
            cout << num << " ";
        }
        cout << endl;
    }

    // 修改操作
    // 将第一行的第二个元素修改为10
    matrix[0][1] = 10;

    // 输出修改后的数组
    cout << "\nMatrix after modification:" << endl;
    for (const auto& row : matrix) {
        for (int num : row) {
            cout << num << " ";
        }
        cout << endl;
    }

    // 删除操作
    // 删除第二行
    matrix.erase(matrix.begin() + 1);

    // 输出删除后的数组
    cout << "\nMatrix after deletion:" << endl;
    for (const auto& row : matrix) {
        for (int num : row) {
            cout << num << " ";
        }
        cout << endl;
    }

    return 0;
}

这段代码演示了以下操作:

  1. 插入操作:使用 push_back() 方法向二维数组末尾插入一行数据。
  2. 修改操作:直接通过双重索引方式修改数组元素的值。
  3. 删除操作:使用 erase() 方法删除指定位置的行。
    输出内容:
    C++中using namespace std的作用以及vector数组的使用_第1张图片

这些操作可以通过双重索引来访问和修改二维数组中的元素,从而实现插入、删除和修改等功能。

你可能感兴趣的:(数据结构,c++,学习,开发语言)