c++ - 如何在 C++ 中用另一个较小的 vector 填充 vector ?

标签 c++ algorithm performance c++11 stl

我想用另一个 vector 填充 std::vector 。例如:

std::vector<int> src = {1, 2, 3};
std::vector<int> dst(9);

我想填充 dst 使其变为:1, 2, 3, 1, 2, 3, 1, 2, 3

有没有有效的方法来做到这一点?

我现在有两种方法:

第一个是两个循环:

auto size = dst.size() / src.size();
for (int i = 0; i < size; i++) {
    for (int val : src) {
        dst.emplace_back(val);
    }
}

或者在一个循环中使用std::copy

也许存在更有效的方法?

最佳答案

您的问题有误。与std::vector<int> dst(9);和显示的代码你会得到一个无限循环。

std::vector::insert

std::vector<int> dst;
for (int i = 0; i < 3; ++i)
    dst.insert(dst.end(), src.begin(), src.end());

关于c++ - 如何在 C++ 中用另一个较小的 vector 填充 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75600257/

相关文章:

c++ - 在 Unix 上分离命令行输出(处理与用户交互)的方法是什么?

arrays - 在算法方面需要帮助 - 查找输出的最大总和

python - 故意为解析器/解释器添加歧义

java - java中的反射或内省(introspection)有多昂贵

javascript - 我应该将 jQuery 或 DOM 对象作为参数传递吗? (性能问题)

c++ - C++中的字符串到下/上

c++ - 我可以强制程序每次都在内存中的同一位置启动吗?

c++ - 实现模板类接口(interface)

c++ - 无法编写用于构建霍夫曼树的函数

java - 使用 Teradata 通过 Java Web 应用程序进行 OLTP 操作