2013-12-13 127 views
2

我有一个包含6个元素数组的多个条目的(二进制)文件。所以文件的结构是这样的:基于第一个数组元素对文件进行排序

{1 2 12 18 22 0} {11 17 20 19 20 7} {3 9 18 24 0 9}... 

其中我已经围绕形成一个数组的元素括号。我想仅基于每个阵列的第一个元素对文件进行排序,因此排序后的文件应为

{1 2 12 18 22 0} {3 9 18 24 0 9} {11 17 20 19 20 7}... 

我该如何去做这件事?

+1

你知道每个元素是如何序列化的(即表示为一个字节序列)吗?例如,每个元素不大于255并存储为单个字节(即文件总大小可以被6整除)? –

+0

@FrerichRaabe - 每个元素是一个4字节的整数。 – Kitchi

回答

2
  1. 将文件读入2维数组。第一维上的每个元素应该包含六个元素。
  2. 实现qsort的比较功能。使用qsort与您的比较函数对数组进行排序。
  3. 将数组写回文件。
-1
#include<stdio.h> 
#include<vector> 
#include<algorithm> 
#include<iostream> 
using namespace std; 

int main() { 

    vector < vector<int> > v; 
    vector <int> t; 

    t.push_back(4); 
    t.push_back(5); 
    t.push_back(6); 
    v.push_back(t); 
    t.clear(); 
    t.push_back(1); 
    t.push_back(2); 
    t.push_back(3); 
    v.push_back(t); 

    sort(v.begin(),v.end()); 

    for (int i = 0; i < v.size(); i++){ 
     for (int j = 0; j < v[i].size(); j++){ 
      cout << v[i][j] << " "; 
     } 
     cout << endl; 
    } 



    return 0; 

} 
+2

这个问题被标记为C;这个答案是用C++编写的。它显示了语言之间的差异,但没有回答这个问题。 –

相关问题