2013-12-13 177 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++編寫的。它顯示了語言之間的差異,但沒有回答這個問題。 –

相關問題