簡體   English   中英

C ++:交換兩個不同向量的兩個元素

[英]C++: Swap two elements of two different vectors

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

但這沒用

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

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

您對此太想了-您只需要:

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

從您的示例看來,您可能需要的是iter_swap

根據您的示例:

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

應該為您工作。

您當然可以將迭代器與swap一起使用:

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

要么

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

要么

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

暫無
暫無

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

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