作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
基本上,我需要读取一个文本文件并将它们按升序
插入到列表中。
文本文件是,
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.h
和IList.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_iterator
s 将文件中的整数复制到列表中和 copy
算法。
然后
l.sort()
使用 list
的方法对项目进行排序。
关于c++ - 如何对整数进行排序并将它们放在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559558/
我是一名优秀的程序员,十分优秀!