【发布时间】:2014-08-13 22:28:24
【问题描述】:
我需要在我的程序中找到不同维度的数组(将是 1-d、2-d 和最多 N 维数组)的最大值和最小值。
谁能帮我写一个函数或函数模板,可以输入任意维度数组并找到最大值/最小值? * 我正在使用向量的向量 像这样的:
#include <vector>
<template T>
int find_max(T target_array, int dimension);
int main() {
using namespace std;
vector<int> array_1d = {1,3,4};
vector<vector<int> array_2d = {{1,3},{3,5,2},{6,4}};
vector<vector<vector<int>>> array_3d = {{{1,3},{2,4,5}},{{6,7,2,3}}};
cout << "Max in 1d array: " << find_max<vector<int>>(array_1d, 1) << endl;
cout << "Max in 2d array: " << find_max<vector<vector<int>>(array_2d, 2) << endl;
cout << "Max in 3d array: " << find_max<vector<vector<vector<int>>>>(array_3d, 3) << endl;
return 0;
}
输出:
Max in 1d array: 4
Max in 2d array: 6
Max in 3d array: 7
Program ended with exit code: 0
谢谢
【问题讨论】:
-
vector<vector<int>>不应用作二维数组。如果您将元素保存在连续的内存中,您可以使用std::minmax_element。 -
数组还是向量?向量的向量甚至可能在每个子维度上都没有相同的深度,即 {{1,2,3},{3,5},{6}}
-
嗨 Snpa,我不知道如何使用 1 个函数来处理不同的输入,我现在正在做的是为不同的维度编写不同的函数...
-
嗨 Cristian Niculescu,是的,这就是问题所在,让我头疼的是它是向量的向量,它具有不同的深度.....
-
使用
vector<vector<int>>作为二维数组是可以的。它是否最佳取决于你将用它做什么。它的主要优点是使用起来非常简单明了。
标签: c++ arrays algorithm sorting vector