我想知道c++中是否有STL函数,以获得向量的维数。例如vec=[[1,2,3],[4,5,6]]尺寸为(2,3(
我知道size((函数。但是函数不返回维度。
在上面的例子中,vec.size((会返回2。要获得第二个维度,我必须使用vec[0].size((,它将是3
在C++中,根据定义,(nstd::
(vector
是size()
元素的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)