2012-04-03 82 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); 

編輯:

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

錯誤消息表明,你這樣做VEC [0]日期左右,因爲vec持有整數而無法工作。向我們展示您用來訪問和轉換您的結構的代碼,也許有人可以提供幫助。 – 2012-04-03 13:34:02

+0

你能更具體地說你想做什麼嗎?你想知道如何聲明一個向量?或者你有興趣將C風格數組中的值傳遞給vector? – Jaywalker 2012-04-03 13:40:20

+0

補充說,我的方式應該工作 – 2012-04-03 13:41:05

回答

2

Arr結構不會隱式轉換爲int。首先,您的結構包含3個int類型,而vector<int>一次是一個int

如果你想要把你的Arrvector,你應該創建一個std::vector<Arr>,然後調用push_back就可以把你的Arr結構在裏面。

std::vector<Arr> myvec; 

myvec.push_back(someArr); 

您需要創建for循環,通過長度老話 - 你的陣列1,並呼籲push_back把每個項目在vector

+0

我添加了代碼,我試圖添加一些我的int到vec ..考慮到我指的是一個int肩膀它的工作? 順便說一句,我不熟悉push_back概念...你能解釋/鏈接給我 – 2012-04-03 13:39:40