首页 > 解决方案 > C++ 入门 5 版。移动迭代器

问题描述

我正在阅读 C++ Primer 5 ed。我正在仔细阅读它,因为它真的很有用。我也练习了太多我从中学到的东西。现在我在第 13 章。移动语义。移动迭代器。在我到达这一段之前,一切都很清楚:

值得注意的是,标准库不保证哪些算法可以与移动迭代器一起使用,哪些不能。因为移动对象可以消除源,所以只有当您确信算法在分配给该元素或将该元素传递给用户定义的函数后不会访问该元素时,才应该将移动迭代器传递给算法。

有人可以向我解释这一段吗?我不明白“只有当您确信算法在分配给该元素或将该元素传递给用户定义的函数后不会访问该元素时,您才应该将移动迭代器传递给算法。”??他说的是哪个元素?感谢你们!

例如:

    std::vector<int> vi{5, 7, 10, 24}, vi2;
        std::copy(std::make_move_iterator(std::begin(vi)), std::make_move_iterator(std::end(vi)), std::back_inserter(vi2));
        std::copy(vi2.cbegin(), vi2.cend(), std::ostream_iterator<int>(std::cout, ", "));

这是否意味着copy不应该访问 的元素vi

标签: c++c++11iteratormove-semantics

解决方案


推荐阅读