C++ 判断两个数组是否相同,即数组中所有元素相同,但顺序可不同

重载运算符"=="

先将两个数组排序
再循环比较

在这里插入图片描述

#include "iostream"
#include "iomanip"
#include "string.h"
#include "cmath"
#include "algorithm"//算法头文件
using namespace std;
class SET{
	public:
		int* p;
		int len;
	public:
		SET(int *p,int len);
		friend int operator==(SET &s1, SET &s2);//判断两个数组是否相同,顺序可以不同 
		void toString();
};
void sort_arrays(SET &s);
	SET::SET(int *p,int len){
		this->len = len;
		this->p = p;	//p指向形参传的地址 
	}
	

	int operator==(SET &s1, SET &s2){
		int flag = 1;
		sort_arrays(s1);	//先将两个数组排序 
		sort_arrays(s2);
		//循环判断
		for(int i=0; i<s1.len; i++){
			if(s1.p[i] != s2.p[i]){
				flag = 0;
				break;
			}
		} 
		return flag;
	}
//排序函数
void sort_arrays(SET &s){
	for(int i=1; i<s.len; i++){
		for(int j=0; j<s.len-i; j++){
			if(s.p[j] > s.p[j+1]){
				int temp = s.p[j];
				s.p[j] = s.p[j+1];
				s.p[j+1] = temp;
			}
		}
	}
} 
	
	void SET::toString(){
		for(int i=0; i<len; i++){
			cout<<p[i];
		}
		cout<<endl;
	}
	
int main(){
	int a[] = {1,2,3,6,5,6};
	int b[] = {1,3,2,5,6,6};
	SET set(a,6);
	SET set2(b,6);
	set.toString();
	set2.toString();
	
	int flag = (set == set2);
	if(flag == 1){
		cout<<"相等"<<endl;
	}else{
		cout<<"不相等"<<endl;
	}
	
	return 0;
}

你可能感兴趣的:(C++与数据结构)