向量迭代器不可解引用(尝试手动反转向量)

声优

我正在尝试创建一个函数,它接受一个向量并简单地反转(手动)。我知道 reverse() 的存在,但我遇到了“向量迭代器不可解引用”的问题,出于教育目的,我想知道这意味着什么。我试着研究这个问题,有人(在这个论坛上)说 vect.end() 根据定义是不可解引用的,但根据我的理解,使用 reverse_iterator 只是颠倒了目的,所以遵循逻辑;vect.rend 不应取消引用。

vector<int> reverseVector(vector<int>);

int main()
{
    vector<int> vec;

    for (int i = 0; i < 11; i++)
    {
        vec.push_back(i);
    }

    vec = reverseVector(vec);

    for (vector<int>::iterator it = vec.begin(); it != vec.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

vector<int> reverseVector(vector<int> vect) 
{
    vector<int>::reverse_iterator ritr;
    for (ritr = vect.rbegin(); ritr != vect.rend(); ritr++)
    {
        vect.insert(vect.begin(), *ritr);
        vect.pop_back();
    }
    return vect;
}
萨马拉斯

您正在从向量中删除元素(从后面弹出),这会使反向迭代器无效


您可以遍历向量的一半并交换元素,例如:

void swap(int& a, int& b) {
    int tmp = a;
    a = b;
    b = tmp;
}

vector<int> reverseVector(vector<int> vect) {
    const size_t origin_size = vect.size();
    for(size_t i = 0; i < origin_size/2; ++i)
        swap(vect[i], vect[origin_size - 1 - i]);
    return vect;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何反转向量?

来自分类Dev

如何反转向量?

来自分类Dev

向量迭代器不可取,请尝试从文件读取

来自分类Dev

向量迭代器不可递增

来自分类Dev

向量迭代器不可递增

来自分类Dev

解引用向量的结束迭代器时打印的奇数值

来自分类Dev

解引用迭代器向量时的分段错误

来自分类Dev

尝试手动创建用户时出现“ undefined method`generate_token'”错误

来自分类Dev

[错误:找不到'ANDROID_HOME'环境变量。尝试手动设置

来自分类Dev

外键约束失败-即使我尝试手动添加数据

来自分类Dev

尝试手动创建用户时出现“ undefined method`generate_token'”错误

来自分类Dev

尝试手动触发比赛条件时ln失败

来自分类Dev

找不到“ ANDROID_HOME”环境变量。尝试手动设置

来自分类Dev

向量迭代器不可取。对优先队列。

来自分类Dev

向量迭代器不可取。对的优先队列。

来自分类Dev

手动计算支持向量机的决策函数

来自分类Dev

在opencv中手动构造向量<Dmatch>

来自分类Dev

使用Sympy“手动”求解特征向量

来自分类Dev

Stripe 的 PaymentIntent 测试手动确认

来自分类Dev

即使我尝试手动构建它们,Visual Studio中的某些项目也会拒绝构建

来自分类Dev

删除我尝试手动重命名时保留的git存储库上的文件夹

来自分类Dev

尝试手动运行时“无法从上下文调用 SpreadsheetApp.getUi()”

来自分类Dev

在C ++集和向量中解引用迭代器时出错

来自分类Dev

向量迭代器不能用 std::shared_ptr<> 解引用

来自分类Dev

手动更新for循环迭代器是否是错误的做法?

来自分类Dev

如何在R中同时反转向量的特定范围?

来自分类Dev

使用Numpy手动反转FFT

来自分类Dev

向量迭代器不可在for循环中使用

来自分类Dev

C ++相邻查找:向量迭代器不可取消

Related 相关文章

  1. 1

    如何反转向量?

  2. 2

    如何反转向量?

  3. 3

    向量迭代器不可取,请尝试从文件读取

  4. 4

    向量迭代器不可递增

  5. 5

    向量迭代器不可递增

  6. 6

    解引用向量的结束迭代器时打印的奇数值

  7. 7

    解引用迭代器向量时的分段错误

  8. 8

    尝试手动创建用户时出现“ undefined method`generate_token'”错误

  9. 9

    [错误:找不到'ANDROID_HOME'环境变量。尝试手动设置

  10. 10

    外键约束失败-即使我尝试手动添加数据

  11. 11

    尝试手动创建用户时出现“ undefined method`generate_token'”错误

  12. 12

    尝试手动触发比赛条件时ln失败

  13. 13

    找不到“ ANDROID_HOME”环境变量。尝试手动设置

  14. 14

    向量迭代器不可取。对优先队列。

  15. 15

    向量迭代器不可取。对的优先队列。

  16. 16

    手动计算支持向量机的决策函数

  17. 17

    在opencv中手动构造向量<Dmatch>

  18. 18

    使用Sympy“手动”求解特征向量

  19. 19

    Stripe 的 PaymentIntent 测试手动确认

  20. 20

    即使我尝试手动构建它们,Visual Studio中的某些项目也会拒绝构建

  21. 21

    删除我尝试手动重命名时保留的git存储库上的文件夹

  22. 22

    尝试手动运行时“无法从上下文调用 SpreadsheetApp.getUi()”

  23. 23

    在C ++集和向量中解引用迭代器时出错

  24. 24

    向量迭代器不能用 std::shared_ptr<> 解引用

  25. 25

    手动更新for循环迭代器是否是错误的做法?

  26. 26

    如何在R中同时反转向量的特定范围?

  27. 27

    使用Numpy手动反转FFT

  28. 28

    向量迭代器不可在for循环中使用

  29. 29

    C ++相邻查找:向量迭代器不可取消

热门标签

归档