首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++ vector::assign()函数的Rust等效项是什么?

C++ vector::assign()函数的Rust等效项是什么?
EN

Stack Overflow用户
提问于 2019-04-17 06:38:33
回答 1查看 203关注 0票数 1

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

新内容是由第一个和最后一个之间的每个元素按相同顺序构造的元素。

我在这方面的基本尝试是以下代码。还有更好的吗?

代码语言:javascript
复制
let i = 0;
for t in transformed.into_iter() {
    if signal.len() <= i {
        signal.push(t);
    } else {
        signal[i] = t;
    }
    i += 1;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 07:32:03

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

代码语言:javascript
复制
signal.clear();
signal.extend(transformed.into_iter());

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

代码语言:javascript
复制
let signal: Vec<_> = transformed.into_iter().collect();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55717518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档