C++11 vector::assign(InputIterator first, InputIterator last)
函数的等价物是什么?根据cplusplus.com的说法,C++版本执行以下操作:
新内容是由第一个和最后一个之间的每个元素按相同顺序构造的元素。
我在这方面的基本尝试是以下代码。还有更好的吗?
let i = 0;
for t in transformed.into_iter() {
if signal.len() <= i {
signal.push(t);
} else {
signal[i] = t;
}
i += 1;
}
发布于 2019-04-17 07:32:03
首先,请注意,除非迭代器的长度等于向量的长度,否则您的循环不会模拟std::vector::assign
的行为。只需先清除向量,然后再推送元素会更简单(向量将保留其原始容量,因此您不必担心不必要的分配)。但是扩展向量可以使用extend函数来完成。
signal.clear();
signal.extend(transformed.into_iter());
或者,如果你正在创建一个新的向量,你可以使用collect。
let signal: Vec<_> = transformed.into_iter().collect();
https://stackoverflow.com/questions/55717518
复制相似问题