我想知道 C 中是否有任何 STL 函式來獲取向量的尺寸。例如 vec = [[1, 2, 3], [4, 5, 6]] 維度為(2, 3)
我知道size()函式。但該函式不回傳尺寸。
在上面的示例中,vec.size() 將回傳 2。要獲得第二維,我必須使用 vec[0].size(),即 3
uj5u.com熱心網友回復:
在 C 中,根據定義,a(n std::)vector是元素的一維向量size(),可以在運行時更改。
您可以定義向量的向量(例如,std::vector<std::vector<int>>),但這沒有“內部”維度相同的約束。例如,{{1, 2, 3}, {1, 2}}有效。
因此,內部維度是模棱兩可的。如果你保持它是相同的并且你確定你有元素,你可以做的就是查詢v[0].size(),等等。
uj5u.com熱心網友回復:
正如lorro 的回答中所說,您可能想要找到 a 的尺寸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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/511320.html
標籤:C
