【问题标题】:C++: Swap two elements of two different vectorsC++:交换两个不同向量的两个元素
【发布时间】:2016-12-11 20:02:08
【问题描述】:
std::vector<int> v1 = {1,3,6};
std::vector<int> v2 = {2,4,7};

用 v2[n] 交换 v1[m]

而不是复制然后覆盖两个元素

我试过了

std::swap(v1.begin() + m, v2.begin() + n);

但这没有用

【问题讨论】:

  • 这与交换不在vector 中的ints 有何不同?
  • 你看过std::swap

标签: c++ vector swap


【解决方案1】:

std::swap 需要引用,而不是迭代器:

std::swap(v1[m], v2[n]);

【讨论】:

    【解决方案2】:

    您当然可以使用带有swap 的迭代器:

    std::swap(*(v1.begin() + m), *(v2.begin() + n));
    

    std::swap(v1[m], v2[n]);
    

    std::swap(v1.at(m), v2.at(n));
    

    【讨论】:

      【解决方案3】:

      你想多了——你只需要:

      std::swap(  v1[m],  v2[n] );
      

      【讨论】:

        【解决方案4】:

        从您的示例看来,您需要的可能是iter_swap

        根据你的例子:

        std::iter_swap(v1.begin() + m, v2.begin() + n);
        

        应该适合你。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多