STL函数来获取c++中向量的所有维度

  • 本文关键字:向量 函数 获取 c++ STL c++
  • 更新时间 :
  • 英文 :


我想知道c++中是否有STL函数,以获得向量的维数。例如vec=[[1,2,3],[4,5,6]]尺寸为(2,3(

我知道size((函数。但是函数不返回维度。

在上面的例子中,vec.size((会返回2。要获得第二个维度,我必须使用vec[0].size((,它将是3

在C++中,根据定义,(nstd::(vectorsize()元素的1D向量,可以在运行时更改。

您可以定义一个向量的向量(例如,std::vector<std::vector<int>>(,但它不具有"内部"维度相同的约束。例如,{{1, 2, 3}, {1, 2}}有效。

因此,内部维度是模糊的。如果您将其保持为相同的,如果您确信您有元素,您可以做的就是查询v[0].size(),依此类推

正如lorro的回答中所说,您可能想要找到std::vector<std::vector<int>>的维度。

查找外部维度很容易,因为您所要做的就是vec.size()。但是内部向量可以是任何长度,不必是相同的长度。假设您想要最小值,这对于STL函数是可行的。

我们可以使用std::transform来用内部向量的维度填充向量,然后使用std::min_element来找到其中较小的一个。

#include <vector>
#include <algorithm>
#include <iostream>
int main() { 
std::vector<std::vector<int>> vec = {{1, 2}, {3, 4, 5}};
std::vector<std::size_t> dim(vec.size());
std::transform(vec.cbegin(), vec.cend(), dim.begin(),
[](auto &v) { return v.size(); });
std::size_t min = *std::min_element(dim.cbegin(), dim.cend()); 
std::cout << "(" << vec.size() << ", " << min << ")n";
return 0;
}

输出:

(2, 2)

最新更新