Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回数字所在的行_C++_Linux_Loops_Grep - Fatal编程技术网

C++ 返回数字所在的行

C++ 返回数字所在的行,c++,linux,loops,grep,C++,Linux,Loops,Grep,下一个文件有几千行 1234 14.5 6 5689 5 2479 5810 1 3 5 9 每行(行号表示区域)最多有4个值(表示标签),这些值介于0和1000之间 我想知道哪些线(区域)是值(标签)并对它们进行排序,为此我需要一个循环,但我不知道如何进行。 例如,标签编号1位于第(区域)1、2和8行,因此输出必须为1:1 2 8 我想要这个输出: 1:12 8 2:16 3:18 4:12 6 5:24578 6:34 7:6 8:47 9:468 10:7 .. 输出是从0到1000的已

下一个文件有几千行

1234
14.5
6
5689
5
2479
5810
1 3 5 9

每行(行号表示区域)最多有4个值(表示标签),这些值介于0和1000之间

我想知道哪些线(区域)是值(标签)并对它们进行排序,为此我需要一个循环,但我不知道如何进行。 例如,标签编号1位于第(区域)1、2和8行,因此输出必须为1:1 2 8

我想要这个输出:
1:12 8
2:16
3:18
4:12 6
5:24578
6:34
7:6
8:47
9:468
10:7
..
输出是从0到1000的已排序标签以及它们所在的区域。
我在Linux或C++的循环中有任何想法吗?

< P>可以有一个<代码> STD::MAP<代码> >映射<代码> INT/COM> > <代码>列表< /代码>。 对于每个值使用:

auto iter = map.find(row);
if (iter != m.end() )
{
    (iter->second).push_back(val);
} else {
    map[row] = std::list<int>(1, val);
}
auto-iter=map.find(行);
if(iter!=m.end())
{
(国际热核聚变实验堆->秒)。推回(val);
}否则{
map[row]=std::list(1,val);
}
然后使用
迭代器
并在末尾打印所有键和值对。

Perl:

perl -lne 'push @{ $h{$_} }, $. for split
           }{
           print "$_: @{ $h{$_} }" for sort { $a <=> $b } keys %h
          ' < input.txt
perl-lne'push@{$h{$},$。分开
}{
为排序{$a$b}键%h打印“$\:@{$h{$\}”
“
$。
是行号,您只需将其添加到行上每个数字的哈希表中。最后,您可以对哈希表的键进行数字排序,并打印相应的数组。

std::array
可能会有所帮助。