如何将 std::vector 索引交换到<int>数据,将数据交换到索引

How to swap std::vector<int> index to data and data to index

本文关键字:数据 索引 交换 gt int lt std vector      更新时间:2023-10-16

索引 : 0 1 2 3数据 : 3
0 1 2

这意味着vector[0]是 3,vector[3]是 2。

现在像这样交换元素。

输出向量:

索引 : 0 1 23 数据
: 1 2 3 0

这意味着

">
  • 0"存在于索引"1"处的输入向量中,因此vector[0]替换为"1">
  • ">
  • 3"存在于索引"0"处的输入向量中,因此vector[3]替换为"0">

我们可以在不使用临时变量的情况下做到这一点吗?

如果你想创建一个新的向量,那么,假设你的向量只包含一个排列(这样我们就可以避免检查我们的索引是否会超出范围,因为它不应该(,你可以构造一个函数

std::vector<int> exchange(const std::vector<int>& in) {
std::vector<int> out(in.size());
for (int i = 0; i < in.size(); i++) out[in[i]] = i;
return out;
}