gpt4 book ai didi

c++ - 如何对整数进行排序并将它们放在列表中

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:37 25 4
gpt4 key购买 nike

基本上,我需要读取一个文本文件并将它们按升序插入到列表中。

文本文件是,

4 1 9 11 0 15 23 2 7 8 17 21.

我需要把它们放在一个列表中,比如

0 1 2 4 7 8 9 11 15 17 21 23

问题是,

  • 将第一项插入空列表。//这将是 4

  • 对于每个连续的项目:

    如果小于第一项,则将其插入到位置0。

    否则,从头扫描列表,寻找第一个

    大于当前值的项,插入

    那个之前的新项目。

我想我需要通过比较对它们进行排序,但我想不出一个清晰的主意。你能帮帮我吗?

(因为教授用的是他自己的IList.hIList.cpp文件,我能用的功能只有insert和erase。)

============================================= ==========================

我试过的是,

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{


ifstream inf(argv[1]);
IList t;
int i1;
int i2;
int i3;
int i4;
int i5;
int i6;
int i7;
int i8;
int i9;
int i10;
int i11;
int i12;

//It is reading each integers from the text file and name it i1, i2, i3..
// The text file is..
// 4 1 9 11 0 15 23 2 7 8 17 21.
// i1 is going to be 4 i1 = 4

inf >> i1 >> i2 >> i3 >> i4 >> i5 >> i6 >> i7 >> i8 >> i9 >> i10 >> i11
>> i12;



//I inserted the first value which is 4
t.insert(i1, 0);

// comparison will start from here..

// when i2 is smaller than i1, we are putting them on the left.

if (( i2 < i1 ))
{
t.insert(i2, 0);
}

// when i2 is greater than i1, we are putting them on the right.

if (( i2 > i1 ))
{
t.insert(i2, 1);
}

最佳答案

您可以使用如下内容:

#include <fstream>    
#include <iostream>
#include <iterator>
#include <list>
#include <algorithm>

using namespace std;

int main(int argc, char *argv[])
{
ifstream f(argv[1]);
istream_iterator<int> b(f);
istream_iterator<int> e;

list<int> l;
copy(b, e, back_inserter(l));

l.sort();
for(auto v: l)
cout << v << endl;
}

解释

    ifstream f(argv[1]);
istream_iterator<int> b(f);
istream_iterator<int> e;

list<int> l;
copy(b, e, back_inserter(l));

使用 istream_iterators 将文件中的整数复制到列表中和 copy算法。

然后

l.sort()

使用 list 的方法对项目进行排序。

关于c++ - 如何对整数进行排序并将它们放在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559558/

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