請問一下vector的用法 |
尚未結案
|
Schuamcher
一般會員 發表:30 回覆:42 積分:14 註冊:2004-11-18 發送簡訊給我 |
請問一下我自訂一個struture,然後我用Vector的方式去建立一序列的struture
typedef struct{ AnsiString ID; unsigned char Flag; double KP; double XP; }Op_Type; vector,目前有兩個程序要處理,當"資料一"進來時,我將資料放入Vector,我是用pushback的方式放在後面,當"資料二"進來時我要在vector找同樣的id,處理第二個程序,請問一下我要用什麼方式知道"資料二"的ID對應的資料一的ID是第幾個序列,即OpVecto[i]的為多少, 還是用其它的方法可以作到我可以找同樣id的資料來作處理。謝應 |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
Schuamcher
一般會員 發表:30 回覆:42 積分:14 註冊:2004-11-18 發送簡訊給我 |
|
psl
一般會員 發表:6 回覆:30 積分:7 註冊:2003-06-11 發送簡訊給我 |
//--------------------------------------------------------------------------- #include |
Schuamcher
一般會員 發表:30 回覆:42 積分:14 註冊:2004-11-18 發送簡訊給我 |
謝謝psl兄及justdo兄的答覆,我看了一下vector的書,我重新改了程式碼
typedef struct{ AnsiString ID; unsigned char Flag; double KP; double XP; }Op_Type; vector請問一下最後一段在編碼時,會出現問題,請問一下是那邊出問題了,還是有那些表頭檔我沒有加進來,還是structure是不能用find這個指令的,謝謝 |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
用vector當然也是可以,只是以你的例子來說map其實是比較合適的
用vector的作法請參照psl
用map的方法可以參考GeorgeKu的作法
我在這邊只解釋你的方法有誤的地方 首先find的函式定義為
template因此,第三個參數,理論上型態該為vector內部元素(element)的型態 以你的例子來說,應該為Op_Type,然而你是這樣呼叫的: iter ite1 = find(OpVector.begin(), OpVector.end(), "TG5"); 傳入的type為char* find在比對的時候,無法進行Op_Type與char*的比對,故會發生錯誤 此種情況下,應該採用find_if函式 ...有點晚了,剩下的改天再補齊... |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
睡不著.. 今天把它補完好了 class="code">
struct Op_Type
{
AnsiString ID;
unsigned char Flag;
double KP;
double XP;
}; struct Op_Type_Compare:public binary_function
struct Op_Type { AnsiString ID; unsigned char Flag; double KP; double XP; bool ID_Is(char* k) const { return (ID == k); } }; int main() { vector |
Schuamcher
一般會員 發表:30 回覆:42 積分:14 註冊:2004-11-18 發送簡訊給我 |
|
Schuamcher
一般會員 發表:30 回覆:42 積分:14 註冊:2004-11-18 發送簡訊給我 |
仍否在請問justdo兄一下,當我代入"TG5"時,程式是沒問題,可是當我用變數時,則出現問題,例代入TStringGrid->Cells[0][0]
iter ite1 = find_if(OpVector.begin(), OpVector.end(), bind2nd(mem_fun_ref(&Op_Type::ID_Is), TStringGrid->Cells[0][0]));則會現問題,我試過很多其它的方法,但是就是出現下面的訊息 [C Error] _function.h(173): E2031 Cannot cast from 'const AnsiString' to 'char *' [C Error] _function.h(173): E2285 Could not find a match for 'binder2nd |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
Schuamcher
一般會員 發表:30 回覆:42 積分:14 註冊:2004-11-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |