【问题标题】:C++ Two n sized integer listsC++ 两个 n 大小的整数列表
【发布时间】:2012-12-08 23:14:46
【问题描述】:

我是 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 中,那么我说是,或者如果不是,那么不。

如何比较这两个列表?我的输入是否正确?

谢谢,

空旷的和平

【问题讨论】:

  • 如果用户输入一个大于 10 的数字作为列表大小,就会发生不好的事情。
  • 尝试改用std::vector
  • 我可以把它留给 int ARR[]; 吗?还是我必须指定长度?
  • 如果你想使用一个数组,那么你必须指定一个大小。 vector 的优点之一是它可以让您在运行时指定大小,甚至可以在矢量创建后更改大小。
  • @Nick 我对 C++ 知之甚少,我将如何使用 std:vector?

标签: c++ list integer compare


【解决方案1】:

我想这就是你所期望的。

#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;
}

【讨论】:

  • 谢谢!这几乎就是我想要的。唯一的问题是列表 2 可以是不同的大小。我将创建一个新变量并询问它的大小。
  • 然后,请注意使用 mismatch,因为如果第二个列表比第一个短,则可能会出错。
  • 是的,那么我需要输出不在那个场景中。
【解决方案2】:

我认为你应该使用动态数组或stl的向量来存储数据。

例如,动态。数组:

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 与数组/向量不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多