0

私たちが持っていると仮定します:

class Dictionary {
    int n;
    int *ints;
    char **strs;
    inline void init(int n);
public:
    Dictionary(int n);
    Dictionary(const Dictionary& dic);
};

と :

Dictionary::Dictionary(int n) {
    init(n);
}

void Dictionary::init(int n) {
    this->n=n;
    ints=new int[n];
    strs=new char*[n];
}
Dictionary::Dictionary(const Dictionary& dic){
    init(n);
    for (int i=0;i<n;i++) {
        ints[i]=dic.ints[i];
        strs[i]=dic.strs[i];
    }
}

initでコードを共有するためのより効率的な方法はありますか?

4

1 に答える 1

1

ヘッダー内:

class Dictionary {
    int n;
    int *ints;
    char **strs;
    inline void init(int n) {
        this->n=n;
        ints=new int[n];
        strs=new char*[n];
    }

public:
    Dictionary(int n);
    Dictionary(const Dictionary& dic);
};

その他の場所:

Dictionary::Dictionary(int n) {
    init(n);
}

Dictionary::Dictionary(const Dictionary& dic){
    init(n);
    for (int i=0;i<n;i++) {
        ints[i]=dic.ints[i];
        strs[i]=dic.strs[i];
    }
}

効率を上げるために、共有コードをインライン化する可能性が高くなります。

于 2012-06-18T11:38:12.603 に答える