gpt4 book ai didi

rust - C++ vector::assign() 函数的 Rust 等价物是什么?

转载 作者:行者123 更新时间:2023-11-29 08:15:32 24 4
gpt4 key购买 nike

C++11 vector::assign(InputIterator first, InputIterator last) 函数的等价物是什么?根据cplusplus.com C++ 版本执行以下操作:

the new contents are elements constructed from each of the elements in the range between first and last, in the same order.

我对此的基本尝试是以下代码。有没有更好的?

let i = 0;
for t in transformed.into_iter() {
if signal.len() <= i {
signal.push(t);
} else {
signal[i] = t;
}
i += 1;
}

最佳答案

首先请注意,您的循环不会模拟 std::vector::assign 的行为,除非迭代器的长度 >= 向量的长度。先清除 vector,然后压入元素会更简单(vector 将保留其原始容量,因此您不必担心不必要的分配)。但是可以使用扩展函数来扩展向量。

signal.clear();
signal.extend(transformed.into_iter());

或者,如果您正在创建一个新向量,您可以使用 collect。

let signal: Vec<_> = transformed.into_iter().collect();

关于rust - C++ vector::assign() 函数的 Rust 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55717518/

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