【问题标题】:arithmetic operation on list::iterator?list::iterator 上的算术运算?
【发布时间】:2012-02-08 08:05:06
【问题描述】:

我收到了这样的list

list<float> l;

我知道l 中有10 个元素,我想从l 中取出前7 个元素并将它们分配给vector,所以我尝试这样做:

vector<float> v(l.begin(), l.begin()+7);

上面的代码无法编译,后来发现list不支持随机访问,而vector支持,那么list::iterator不支持算术运算?

如果是这样,我怎样才能完成上面提到的工作?

【问题讨论】:

    标签: c++ list vector iterator stl-algorithm


    【解决方案1】:

    使用copy_n:

    v.resize(7);
    copy_n(l.begin(), 7, v.begin());
    

    【讨论】:

    • 我猜,back_inserter 可以用来调整v 的大小,对吧?
    • 我目前不用C++11,可以用copy_n吗?
    • @Alcott 是的:copy_n(l.begin(), 7, back_inserter(v));
    • @Peter v 需要为空才能使用 back_inserter(v),否则使用 v.begin() 覆盖 v 的内容。对吧?
    • @Alcott back_inserter 不会调整 v 的大小。请参阅 cplusplus.com/reference/std/iterator/back_inserter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2020-10-07
    • 2016-06-16
    • 2016-03-10
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多