C ++中两个向量之间的元素交换

时间:2014-02-10 14:15:26

标签: c++ arrays vector dynamic-arrays

我有一个有趣的问题。我在这里简化它。

我有一个包含以下内容的向量:a = { 13, 56, 76, 24} 另一个向量包含:b = { 2, 74, 16, 29}

我想交换价值,比方说562。所以我希望我的数组是:

a = {13, 2, 76, 24} b = {56, 74, 16, 29}

所以问题是:我使用push_back向我的向量添加值,我不知道这些值在每个向量中的存储位置。所以我知道向量2中有b,向量56中有a。我该如何进行此更改?

2 个答案:

答案 0 :(得分:9)

  1. 使用std::find查找每个向量中的元素
  2. 检查是否找到了元素
  3. 使用std::iter_swap交换元素。
  4. 示例:

    auto ita = std::find(a.begin(), a.end(), 56);
    auto itb = std::find(b.begin(), b.end(), 2);
    if (ita != a.end() && itb != b.end())
      std::iter_swap(ita, itb);
    

答案 1 :(得分:0)

std::vector<int>::iterator it56 = std::find( vec56.begin(), vec56.end(), 56);
std::vector<int>::iterator it2 = std::find( vec2.begin(), vec2.end(), 2);
if ( it56 != vec56.end() && it2 != vec2.end()) {
  *it56 = 2;
  *it2 = 56
  // or: std::iter_swap(it56, it2);
}