gpt4 book ai didi

c++ - 如何找到要从 vector 中删除的值,并从辅助 vector 中删除相同的位置?

转载 作者:行者123 更新时间:2023-11-28 00:06:36 26 4
gpt4 key购买 nike

我有 2 个 vector ,例如

 vector<int> set1;     // 4, 5, 2
vector<string> set2; // a, b, c

我想找到并删除 5来自 set1并且因为它是第二项,所以删除 b来自 set2以及。

最佳答案

首先,一个名为set1set2vector 很奇怪。为什么不使用 std::set

无论如何,假设 set2 不小于 set1,一个非常通用的解决方案是使用 std::distance计算查找结果与 set1 开始之间的距离。然后,您可以将距离添加到 set2 的开头:

#include <vector>
#include <algorithm>
#include <iostream>
#include <string>

int main()
{
std::vector<int> set1 = { 4, 5, 2 };
std::vector<std::string> set2 = { "a", "b", "c" };

using std::begin;
using std::end;

// get iterator to first '5' element:
auto const set1_iter = std::find(begin(set1), end(set1), 5);

// how many steps does it take to go from start to the '5' element?
auto const distance = std::distance(begin(set1), set1_iter);

// go to same position in set2:
auto const set2_iter = begin(set2) + distance;

// use position to erase the element:
set2.erase(set2_iter);

for (auto&& element : set2)
{
std::cout << element << "\n";
}
}

在实际代码中,您需要为 set2 较小或 5 不存在的情况添加一些错误处理。

关于c++ - 如何找到要从 vector 中删除的值,并从辅助 vector 中删除相同的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35378432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com