2012-04-03 7 views
0

問題があります。私の "配列"構造体をstd::vector<int>に変換する必要があります...ポイントは、私は目的がデータベースである動的な行列を持っています。しかし、ある時点で、私はいくつかの値を '配列'からベクトルに移動する必要があります。私は休暇中のエラーを取得します構造体の型をvect intに変換する

c:\mingw\bin\../lib/gcc/mingw32/4.6.1/include/c++/bits /stl_iterator_base_types.h:166:53: error: 'int' is not a class, struct, or union type 

誰かがこのことをどうやって実現するのでしょうか?

構造:

const int days=31; 
const int exp=6; 

struct Arr{ 
    int days; 
    int exp; 
    int **M; 
}; 
typedef Arr* Array; 

ベクトル:

vector <int> vec(31); 

EDIT:

int dayExp(int day, Array &M){ 
    int s=0; 
    for(int i=0;i<6;i++){ 
     s += M->M[day][i]; 
    } 
    return s; 
} 

void srtDesc(Array &M){ 
    vector <int> vec(31); 
    for(int i=0;i<31;i++){ 
     vec[i]=dayExp(i, M); 
    } 
    sort(vec[0],vec[1]); 

    for(int i=0;i<31;i++){ 
     cout<< vec[i]; 
    } 
} 
+1

に各項目を配置するpush_backを呼び出して、エラーメッセージは、あなたがVECのような何かをすることを示唆している[0] vecがintを保持しているため動作できない。構造体にアクセスして変換するために使用しているコードを表示してください。誰かが助けてくれるかもしれません。 –

+0

もっと具体的にあなたは何をしたいですか?ベクタを宣言する方法を知りたいですか?あるいは、Cスタイルの配列からベクトルに値を渡すことに興味がありますか? – Jaywalker

+0

が追加されました。 –

答えて

2

あなたArr構造体は、暗黙的にintに変換しません。まず、構造体には3つのintタイプが含まれていますが、vector<int>は1つずつintです。

あなたがvectorにあなたのArrを入れたい場合は、std::vector<Arr>を作成し、それにあなたのArr構造体を配置することでpush_backを呼び出す必要があります。

あなたは長さを通過 forループを作成する必要があります
std::vector<Arr> myvec; 

myvec.push_back(someArr); 

- あなたの配列の1とvector

+0

私はvecに私のintのいくつかを追加しようとしていたコードを追加しました。 btw私はpush_backコンセプトに精通していません...あなたは私に説明/リンクできますか? –

関連する問題