C++多维 vector

标签 c++ multidimensional-array vector dynamic

我怎样才能在 C++ 中使用 vector 制作这样的表格:

65  A
66  B
67  C

我是用这样的动态二维数组完成的:

int** ary = new int*[2];
for (int i = 0; i < size; ++i)
    ary[i] = new int[size];

// fill the array
for (int i = 0; i < size; i++) {
    ary[i][0] = ascii_values[i];

}
for (int i = 0; i < size; i++) {
    ary[i][1] = ascii_chars[i];

}

我怎样才能用 vector 做到这一点? 我正在考虑将两个 vector 放在第三个 vector 中,但我不知道这是否可能。 附言一切都必须是动态的,因为我将从文件中导入数据 请帮助:)

最佳答案

您可以使用 std::pair 的 vector 轻松实现上述行为。查看demo :

#include <utility>
#include <vector>
#include <algorithm>
#include <iostream>

int main() {
 std::vector<std::pair<int,char>> result;
 std::vector<int> ascii_vals {65, 66, 67};
 std::vector<char> ascii_chars {'a', 'b', 'c'};

 auto ItA = ascii_vals.begin();
 auto ItB = ascii_chars.begin();

 while(ItA != ascii_vals.end() && ItB != ascii_chars.end())
 {
    result.push_back(std::make_pair(*ItA,*ItB));

    if(ItA != ascii_vals.end())
    {
        ++ItA;
    }
    if(ItB != ascii_chars.end())
    {
        ++ItB;
    }
 }

 for(std::vector<std::pair<int, char> >::iterator it = result.begin(); it != result.end(); it++)
    std::cout << "(" << it->first << ", " << it->second << ")" << std::endl;

 return 0;
}

上面的代码会打印:

(65, a)
(66, b)
(67, c)

关于C++多维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790300/

相关文章:

c++ - 数组是指针吗?

c++ - 当我尝试用 makefile 编译我的 qt 程序时它不起作用

c++ - 机器epsilon是如何计算的?

java - 考虑到内存限制,是否有另一种方法可以在 Java 中处理大型二维数组?

ios - 多维数组转表

java - 如何区分能被 2 整除和能被 4 整除?

未知维度的 Numpy 索引数组?

c++ - 固定大小 std::vector

android - 我在哪里可以找到 Android 营销图片?一个空白的平板电脑图像,我可以将我正在运行的应用程序粘贴到其中作为宣传图片,这将是完美的

c++ - 如何调整 2D C++ vector 的大小?