gpt4 book ai didi

c++ - 从相反的顺序中获取 2 个 vector 之间的公共(public)值

转载 作者:行者123 更新时间:2023-12-04 13:05:31 27 4
gpt4 key购买 nike

所以我需要从末尾开始或倒序排列的 2 个 vector 之间的公共(public)值。并且一旦找到共同值(value),我就不在乎是否存在更多共同值(value)。

好吧,起初对我来说这听起来也很容易,但现在我在一天内看到了比以往更多的 vector 语法。所以,最后我在这里寻求帮助。

示例:
输入

v1: 32, 64, 90
v2: 32, 64, 78

输出:

64

首先尝试使用 python 语法:

    vector<int>::iterator it1 ;
vector<int>::iterator it2 ;

for(it1 = v1.end() && it2 = v2.end(); it1!=v1.begin() && it2!=v2.begin(); it1-- && it2--){
if (*it1==*it2) { //please ignore if the inner syntax is wrong
res=*it1; //because I already tried a lot of syntaxes so really confused right now
break; //Please look at the for loop
}


这个,没用。所以,我想也许我没有正确地迭代 2 个 vector 。我在 google 上查看了相同的内容,stackoverflow 网站显示我可以使用 zip,但它在我的比赛页面上不起作用。

接下来,我尝试过,

vector<int>::iterator it1 = v1.end();
vector<int>::iterator it2 = v2.end();

while(it1 != v1.begin() || it2 != v2.begin())
{
if (*it1 == *it2){
cout<<*it1<<" "<<*it2<<endl; //Output for the same is below
res=*it1;
break;

}

if(it1 != v1.begin())
{
++it1;
}
if(it2 != v2.begin())
{
++it2;
}

}

编译成功,并输出,

0 0 

那么,你能帮我做同样的事情吗?是否存在可以帮助我的内置函数,或者是否存在小错误,我可以通过改进它来继续

提前致谢。

最佳答案

使用反向迭代器,向后迭代与向前迭代一样简单。您只需要一个循环来并行递增两个迭代器并检查元素是否相等:

#include <iostream>
#include <vector>

int main() {
std::vector<int> v1{32, 64, 90};
std::vector<int> v2{32, 64, 78};
auto it1 = v1.rbegin();
auto it2 = v2.rbegin();
auto it_result = v1.rend();
for (; it1 != v1.rend() && it2 != v2.rend(); ++it1,++it2){
if (*it1 == *it2) {
it_result = it1;
break;
}
}
if (it_result != v1.rend()) std::cout << *it_result;
}

关于c++ - 从相反的顺序中获取 2 个 vector 之间的公共(public)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69663947/

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