C ++两个n大小的整数列表

时间:2012-12-08 23:14:47

标签: c++ list integer compare

我是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

2 个答案:

答案 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;
}