gpt4 book ai didi

c++ - 打印两个数组中的非公共(public)元素

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:56 24 4
gpt4 key购买 nike

我正在尝试打印两个数组之间的非公共(public)元素。例如,如果 array1 = { 1, 3, 5}array2 = {1, 2, 4, 5},我的输出应该是 {2, 3, 4

我在这里尝试过一些东西。但它只打印 3。我做错了什么?

#include<iostream>

using namespace std;
int main()
{
int a[] = { 1, 3, 5 };
int b[] = { 1, 2, 4, 5 };
bool contains = false;
int result[10];
int r = 0;
int x;

for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (a[i] == b[j]) {
contains = true;
break;
}
}
if (!contains) {
result[r]=a[i];
++r;
}
else{
contains = false;
}
}
for (x = 0; x < r; x++)
{
cout<< result[x]<<"\n";
}

return 0;
}

最佳答案

您没有将 b 中的唯一值添加到 result。但这是c++。我建议使用 std::vectorstd::sortstd::set_symmetric_differencestd::back_inserter

#include <iostream>     // std::cout
#include <algorithm> // std::set_symmetric_difference, std::sort
#include <iterator> // std::back_inserter
#include <vector> // std::vector

int main()
{
std::vector< int > a = { 1, 3, 5 };
std::vector< int > b = { 1, 2, 4, 5 };

std::sort( a.begin(), a.end() );
std::sort( b.begin(), b.end() );

std::vector< int > result;
std::set_symmetric_difference( a.begin(), a.end(), b.begin(), b.end(), std::back_inserter(result) );

for ( int x : result )
std::cout << x << "\n";

return 0;
}

Live Example

正如@ChristianHackl 在下面的评论中所建议的,也可以为 ab 使用数组,并使用独立函数 std: :beginstd::end:

#include <iostream>     // std::cout
#include <algorithm> // std::set_symmetric_difference, std::sort
#include <iterator> // std::back_inserter
#include <vector> // std::vector, std::begin, std::end

int main()
{
int a[]{ 1, 3, 5 };
int b[]{ 1, 2, 4, 5 };

std::sort( std::begin(a), std::end(a) );
std::sort( std::begin(b), std::end(b) );

std::vector< int > result;
std::set_symmetric_difference( std::begin(a), std::end(a), std::begin(b), std::end(b), std::back_inserter(result) );

for ( int x : result )
std::cout << x << "\n";

return 0;
}

关于c++ - 打印两个数组中的非公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539557/

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