我是C ++的新手,我需要一些帮助来创建这个程序: 我需要询问列表的大小,然后获取包含整数的列表,然后询问第二个列表的大小并获取这些整数。
到目前为止,我有这个:
#include <iostream>
using namespace std;
int main()
{
long int ARR[10];
int i,n;
printf("List 1 size: ");
scanf("%d",&n);
printf("List 1 data: ");
for(i=0;i<n;i++)
{
scanf("%ld",&ARR[i]);
}
这样就会获取第一个列表的输入。现在我将重复第二个列表。 但关键是我现在需要比较两个列表。如果list1在list2中,那么我说yay,或者如果没有,那么nay。
如何比较这两个列表?我是否在输入的正确轨道上?
谢谢,
EmptyPeace
答案 0 :(得分:0)
我认为你应该使用动态数组或stl的向量来存储数据。
例如,dyn。阵列:int size;
scanf("%d", size);
int *tab = new int[size];
...
delete[] tab;
或矢量方式:
#include <vector>
...
int size;
scanf("%d", size);
vector <int> tab(size);
// to insert an element, use tab.push_back( number );
// and getting an element goes array-way, for example tab[0];
我的一些话 - 如果你用c ++编写,使用cin和cout进行输入/输出,除非你需要额外的速度或特定的格式。请记住,list与数组/向量不同。
答案 1 :(得分:0)
我认为这就是你的期望。
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
using namespace std;
bool mypredicate (int i, int j) {
return (i==j);
}
int main(){
int size_list = 0;
vector<int> list1, list2;
cin >> size_list;
list1.resize(size_list);
list2.resize(size_list);
cout << list1.size() << endl;
for (int i = 0; i < size_list; i++)
cin >> list1[i];
for (int i = 0; i < size_list; i++)
cin >> list2[i];
pair<vector<int>::iterator,vector<int>::iterator> mypair;
mypair = mismatch (list1.begin(), list1.end(), list2.begin(), mypredicate);
if( mypair.first == list1.end() && mypair.second == list2.end() )
cout << "are equals" << endl;
else{
cout << "aren't " << endl;
cout << *mypair.first << ", " << *mypair.second << endl;
}
system("pause");
return 0;
}