我有一个向量的向量向量。每个第二层向量可以具有不同的长度。我想创建int的向量,其中每个值是相应向量的长度除以常量。
例如:
std::vector<int> a = { 1, 2, 3 };
std::vector<int> b = { 1, 2, 3, 4 };
const int kDivisor = 10;
std::vector<std::vector<int>> collection;
collection.push_back(a);
collection.push_back(b);
std::vector<double> scaled_lengths;
for (auto v : collection) {
scaled_lengths.push_back(static_cast<double>(v.size()) / kDivisor);
}
所需的输出是scaled_length = [。3,.4]
我可以使用STL算法来获得此输出吗?
谢谢!
答案 0 :(得分:0)
这并不简单,但也许你想把它当作更大的东西的构建块。
scaled_lengths.resize(collection.size());
std::transform(collection.begin(), collection.end(), scaled_lengths.begin(),
[=](auto &v) { return static_cast<double>(v.size())/kDivisor; });