這應該將矢量的內容直接複製到底層的SAFEARRAY,假設它們是簡單的類型或指針。
vector<T> vecInput;
// Create a SAFEARRAY of size elements
CComSafeArray<T> sa(vecInput.size());
// Copy all the contents into the SAFEARRAY
memcpy(&sa.GetSafeArrayPtr()->pvData[0], &vecInput[0], sizeof(T) * vecInput.size());
如果你正在尋找一個通用的解決方案,遍歷向量也適用:
vector<T> vecInput;
// Create a SAFEARRAY of size elements
CComSafeArray<T> sa(vecInput.size());
// Copy all the contents into the SAFEARRAY
for (size_t i = 0; i < vecInput.size(); ++i)
sa.SetAt(i, vecInput[i]);
如果你想使用STL的算法,至少還有one solution that provides STL compliant iterators on top of a SAFEARRAY之後,你可以調用CComSafeArray::Attach
到將SAFEARRAY分配給CComSafeArray。
那麼你可以問Stack Overflow。這很快。 –
是否有一個類型爲你的向量<>,或者你在尋找一個通用的解決方案(在這一點上我有點自信不存在)?即你想要這個矢量,矢量等? –
WhozCraig