c++ - 编写用于创建 vector 长度 vector 的算法

标签 c++ stl

我有一个整数 vector 的 vector 。第二层 vector 中的每一个都可以具有不同的长度。我想创建整数 vector ,其中每个值都是相应 vector 的长度除以一个常数。

例如:

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 算法来获得此输出吗?

谢谢!

最佳答案

它并不简单,但也许您希望将它作为构建更大事物的基石。

    scaled_lengths.resize(collection.size());
    std::transform(collection.begin(), collection.end(), scaled_lengths.begin(),
                   [=](auto &v) { return static_cast<double>(v.size())/kDivisor; });

关于c++ - 编写用于创建 vector 长度 vector 的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35545773/

相关文章:

c++ - 如何对 std::vector 进行排序但不使用 std::sort 更改特定元素?

c++ - 在 C++ 中初始化字符串

c++ - 为什么 std::list 没有 operator[]?

c++ - 使用二维指针数组时出现段错误

c++ - 关于STL线程安全和STL调试的问题

c++ - find STL算法的预期返回

c++ - 使用文件初始化静态成员

c++ - 使用 2 个参数复制构造函数

c++ - leetcode 540上的运行时错误。已排序数组中的单个元素

c++ - 代码中的段错误