gpt4 book ai didi

c++ - 将 std::vector 转换为 CComSafeArray 的任何快速方法

转载 作者:行者123 更新时间:2023-11-30 02:59:02 25 4
gpt4 key购买 nike

有什么快速的方法可以将 std::vector 转换为 CComSafeArray。我目前正在编写一段代码,基本上将 5 或 6 vector 转换为 CComSafeArray(不是在迭代中)。其中,大块代码(释放旧空间,创建新的安全阵列,复制)出现。我真的希望我可以轻松地转换它。

因为我们可以编写一个方法来进行这种转换,所以我实际上正在寻找位于库等角落的有用函数。非常感谢您的帮助!

最佳答案

假设它们是简单类型或指针,这应该将 vector 的内容直接复制到底层 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 也可以:

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。

关于c++ - 将 std::vector 转换为 CComSafeArray 的任何快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com