關於VARIANT資料結構的一點疑問

2021-05-23 09:17:02 字數 1370 閱讀 9209

今天在使用vector結構儲存的時候,發現push_back時的資料沒有問題,但是通過下標或迭代器取出來的時候出現了資料不匹配的情況。具體原因還待研究。

由於時間的關係,我換了一種方式,用vector結構儲存,具體過程如下。

variant * pval;

pval = (variant *)cotaskmemalloc(sizeof(variant));

variantinit(pval);

hr = pclsobj->get(vec_parameter[i], 0, pval, 0, 0);

vec_result.push_back(pval);            //放入vector中

//取出資料,並釋放資源

variant *temp2 = (variant *)cotaskmemalloc(sizeof(variant));

variantinit(temp2);  //將temp2設定為vt_empty

void *te*** = temp2;

for (i_variant = vec_result_from_wmi.begin(); i_variant != vec_result_from_wmi.end(); i_variant++)

for (i_variant = vec_result_from_wmi.begin(); i_variant != vec_result_from_wmi.end(); i_variant++)

variantclear((variant *)te***);

cotaskmemfree((variant *)te***);

***通過ccomvariant使用variant變數

ccomvariant

是atl

對於variant

的簡單包裝。通過

ccomvariant

可以更簡單的使用

variant

,而不必擔心沒有進行初始化或清除。如果沒有特殊情況,應該盡量使用

ccomvariant

而不要使用

variant。

以下是使用

ccomvariant

的**例項。

ccomvariant val;

val.vt = vt_i4;

val.lval = 10;

// val

不必清除

以下是使用

ccomvariant

陣列的例子。

ccomvariant * pval;

pval = new ccomvariant[10];

for (int i = 0; i < 10; ++i)

...

delete pval;

關於資料結構 一

資料儲存 的目的是便於資料訪問,這個關係就是資料結構 演算法 是計算機解題的模型 輸入,輸出,順序執行,跳轉,迴圈,分支,有限步驟 人大腦組織資料的方式有線,樹,圖三種邏輯結構,而計算機儲存採用順序,鏈式和兩者混合的方式。前者是概念性的東西,後者是物理實現。線形結構 演算法是迭代演算法,你只要注意規...

關於資料結構

定義,性點 二叉樹是一種樹形結構,其特點是每個結點至多只有兩顆子樹,並且二叉樹的子樹有左右之分。非空二叉樹葉子結點數等於度為2的結點的個數加1,即n0 n2 1 非空二叉樹上第k層上至多有2 k 1 個結點。高度為h的二叉樹至多有2 h 1個結點 樹的最大度為2 樹的高度 從所有葉節點開始數高度到根...

關於HashMap的資料結構

一hashmap的資料結構 jdk1.8以前是陣列 鍊錶 jdk1.8以後是陣列 鍊錶 紅黑色 二資料結構的物理結構 是指資料的邏輯結構在計算機中的儲存形式 資料元素的儲存結構形式有如下兩種 兩種結構,各有優點和缺點,可以相互結合的運用 hashmap正好兩種資料結構都用到了 三陣列 hashmap...