0

私は C の初心者 (1 週間未満) で、データを取得するより効果的な方法を見つけようとしています。基本的に、ティッカー、価格、変更などの株式データがいくつかあると想像してください。

これまでの私のアプローチは、すべてのデータを 3 つの配列に入れることでした。IBM の価格が必要な場合は、ティッカー配列を検索してインデックスの場所を取得し、価格配列からその場所を取得します。それは正常に動作しますが、私は多くの検索を行い、データが変更されないため、これを行うためのより効果的な方法があるかどうか疑問に思っていましたか?

IBMをキーとして保存し、価格/変更の配列を値として保存するための辞書/ハッシュマップを探してみましたが、Cでこれを行う方法を理解できないようです。可能であれば簡単な方法がありますこれをする?私は別のプログラムに取り組んでおり、ゼロから独自のプログラムを作成する方法を本当に学びたくありません (必要な場合は、間違いなくそれに取り組みます)。

4

1 に答える 1

5

これを試してください: http://uthash.sourceforge.net/

フロントページの例は、ほとんど自明です。

struct Stock {
   float price, change;
   char name[3];
   UT_hash_handle hh;
};

struct Stock * stocksHash = NULL;    
struct Stock * stockItem;
HASH_ADD_STR(stocksHash, name, stockItem );
HASH_FIND_STR(stocksHash, "IBM", stockItem );

//edit
void new_stock(struct Stock * stocksHash, char *name, float price, float change) {
    struct Stock *s;

    s = malloc(sizeof(struct Stock));
    strncpy (s->name, name, 3);
    s->price = price; s->change = change;
    s->id = user_id;
    HASH_ADD_STR( stocksHash, name, s );  
}

void update_stock (struct Stock * stocksHash, char *name, 
                   float price, float change) {
    struct Stock *s;
    HASH_FIND_STR (stocksHash, name, s);
    if (s) {
        s->price = price; s->change = change;
    }
}
于 2012-06-04T16:20:10.767 に答える