关于C++中的二维向量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C++中的二维向量相关的知识,希望对你有一定的参考价值。

二维向量也是像二维数组那样是用下标了确定元素地址的吗?
二维向量和二维数组有什么相同之处和不同之处吗?
若要输出二维向量中的某个元素那应该怎样做呢?
那位朋友对二维向量比较了解的请举个例子说下!

额外的问个问题:
一维向量中有很多操作像:删除元素、插入元素等这些操作都用背下来吗?还是说有些要有些不用要!
唉!我看钱能C++都快看傻了!都不知道他讲的那些是重点为,那些是记下!像二维向量一页就搞定了!我都不知道那些是重点!初学用错书!

二维向量只是等于两个一位数组。
二维数组a[N,M]是一个N*M的表.等于N个一维数组。 当N = 2时。表示二维向量。
如二维数组 : int a[100][100].
二维向量 : int a[2][100].
由于二维向量被二维数组包含,所以二维向量也是像二维数组那样是用下标了确定元素地址。
二维向量和二维数组相同之处:数组名都是二级指针。
和不同之处: 二维向量其二维性规定了第一个下标一定是2个宽度。
同理三维向量规定了第一个下标一定是3个宽度。
同理N维向量规定了第一个下标一定是N个宽度。
所以数组 int a[N][M]. 是一个N维向量。 当N=2是他就被特殊化为二维。
要输出二维向量的某个元素,跟一般二维数组寻址就行了。

额外的问个问题:
相信我,背代码是背不住的。你在看书时一定要不时地动手在电脑上写写代码。只要你的代码写得多,你以后在看书的时候就可以由书本的文字描述在自己的脑海里产生自己的解决算法和代码。。。

我是过来人,苦口婆心。信不信由你。追问

朋友!可以在说下!你上面说的二个宽度是什么意思!

追答

说白了就是二维。每一维占一行,所以22222222

参考技术A C++没有这个语言特性吧,这是你书上自己写的例子吧?一维向量你是指vector吗?这个属于STL范畴了,若你还在语言入门阶段的话可以不学习STL,毕竟STL对C++语言的掌握和数据结构要有一定认识,先不学习它是正确的,语言基础学习好之后再单独买本STL的书来学习就好了。 参考技术B 向量?还是指针啊?

使用fstream将文件逐行读取到C++中的二维向量中[重复]

【中文标题】使用fstream将文件逐行读取到C++中的二维向量中[重复]【英文标题】:Read file line by line using fstream into a 2d vector in C++ [duplicate] 【发布时间】:2020-11-06 17:38:55 【问题描述】:

input.txt文件的内容是:

45 15 87 12
12 48 878 7
11 25 85 44

注意:每行最后一个数字与换行符之间没有空格。 如何读取文件并将其内容存储为代表矩阵的二维向量。向量应如下所示:

    vector<vector<int>> vect
    
        45 15 87 12,
        12 48 878 7,
        11 25 85 44
    ;

描述一个 3x4 矩阵

【问题讨论】:

【参考方案1】:

编辑:经过测试和工作

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;

int main() 
    istringstream input(R"(45 15 87 12
12 48 878 7
11 25 85 44)");

    vector<vector<int>> vect;
    // go through each line of file
    string line;
    while (getline(input, line)) 
        istringstream line_ss(line);
        vector<int> row;
        // go through each number on line
        for (int element; line_ss >> element;) 
            // insert number into row
            row.push_back(element);
        
        // insert row into vect
        vect.push_back(row);
    
    cout << "done" << endl;

应该希望是非常自我解释的,我使用 istringstream 而不是 ifstream 但两者都应该工作。如果您需要任何部分的解释,请告诉我。

编辑:其他人已将此链接到具有类似解决方案的帖子,因此请使用该帖子获取更多信息,并且似乎可以进行更多解释。

【讨论】:

以上是关于关于C++中的二维向量的主要内容,如果未能解决你的问题,请参考以下文章

c++中的二维向量问题

引用二维向量中的元素 (c++)

使用fstream将文件逐行读取到C++中的二维向量中[重复]

在 C++ 中填充二维向量

C++ 按列对二维向量进行排序

C++ 如何制作二维向量函数?