【问题标题】:In c++ how to move range elements for a vector of vectors在c ++中如何移动向量向量的范围元素
【发布时间】:2013-10-21 20:33:36
【问题描述】:

假设我有一个:

std::vector<std::vector<int> > indices;

我填写了这些,外部和内部向量的每个索引都有 3 个条目。现在我想做一些类似于在单个向量容器上应用 std:move_backward() 的事情。

让我举个例子。这是我在以下索引处填充的初始容器:

[0][0][0][1][0][2] , [1][0][1][1][1][2] , [2][0][2][1][2][2] , [3][0][3][0][3][0]

从第 i 个元素向后移动后,在此示例中:外部索引 [1],我会得到:

[0][0][0][1][0][2] , [1][0][1][1][1][2] , [1][0][1][1][1][2] , [2][0][2][1][2][2]

基本上,外部索引[1] 放在[2] 中,[3] 被原来的[2] 替换,内部向量随之移动。

关于如何做到这一点的任何想法?也许有一个函数模板?

【问题讨论】:

  • 我不确定我是否理解。使用 std::move_backward 时出了什么问题?
  • move_backward 给出错误/空值,但copy_backward 似乎可以解决问题:)

标签: c++ vector multidimensional-array move stdvector


【解决方案1】:

这应该符合您的描述:

std::copy_backward(indices.begin()+1, indices.begin()+3, indices.end());

不需要对内部向量进行特殊操作。

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 2012-09-18
    • 1970-01-01
    • 2021-12-28
    • 2015-10-14
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多