gpt4 book ai didi

c++ - 以重复方式向 std::vector 添加元素

转载 作者:行者123 更新时间:2023-11-30 02:17:02 26 4
gpt4 key购买 nike

我想将一个 vector 中的值复制到另一个将以特定顺序存储的 vector 中,第二个 vector 将包含比第一个 vector 更多的元素。

例如:

vector<int> temp;
temp.push_back(2);
temp.push_back(0);
temp.push_back(1);
int size1 = temp.size();

int size2 = 4;
vector<int> temp2(size1 * size2);

现在我想像这样填充 temp2:{2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1}。

是否可以只使用算法(例如填充)来做到这一点?

最佳答案

是的,可以使用 std::generate_n算法:

int main() {
std::vector<int> base{1, 0, 2};
const int factor = 4;
std::vector<int> out{};

std::generate_n(std::back_inserter(out), base.size() * factor,
[&base, counter=0]() mutable {
return base[counter++ / factor];
});

for(const auto i : out) {
std::cout << i << ' ';
}
}

此代码打印:1 1 1 1 0 0 0 0 2 2 2 2

关键是 std::generate_n 中使用的 lambda。它在内部计数器上运行,以了解根据 base vector (并根据 factorcounter 值访问)生成哪些值。

关于c++ - 以重复方式向 std::vector 添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com