簡體   English   中英

C ++中兩個向量之間的元素交換

[英]Element exchange between two vectors in C++

我有一個有趣的問題。 我在這里簡化它。

我有一個向量包含: a = { 13, 56, 76, 24}另一個向量包含: b = { 2, 74, 16, 29}

我想交換值,比如說562 所以我希望我的數組是:

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

所以問題是:我使用push_back將值添加到向量中,但我不知道這些值在每個向量中的存儲位置。 所以我知道向量b某處有2 ,向量b某處有56 a 我如何執行此更改?

  1. 使用std::find查找每個向量中的元素
  2. 檢查是否已找到元素
  3. 使用std::iter_swap交換元素。

例:

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);
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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM