将STD ::向量转换为ccomsafearray的任何快速方法
Any quick way to convert std::vector to CComSafeArray
是否有任何快速方法将std :: vector转换为ccomsafearray。我目前正在编写一件代码,该代码基本上将5或6个向量转换为Ccomsafearray(不在迭代中)。其中,大量代码(释放旧空间,创建新的Safearray,复制)出现。我真的希望我可以轻松转换。
我们可以编写一种进行这种转换的方法,我实际上正在寻找有用的功能,位于图书馆的角落等。非常感谢您的帮助!
这应该将向量的内容复制到基础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算法,则至少有一种解决方案在SafeArray顶部提供符合STL的迭代器,然后您可以致电CComSafeArray::Attach
将SafeArray分配给CCOMSAFEARRAY。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 复制几乎为空的数组的最快方法
- 通过JNI传递数据数组的最快方法是什么
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 链表c++插入,所有情况都已检查,但没有任何工作
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- C++模板函数,用于比较任何无符号整数和有符号整数
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 任何更快地生成元素并检查它们是否为素数的方法
- 在C++中使用armadillo lib将条目分配到稀疏矩阵中的任何更快的方法
- 有人可以告诉我任何不同的方法来使这段代码更快
- 任何比 pow() 更快的方法都可以在 C++ 中计算 10 的整数幂
- 计算分布流中字符串数的任何更快方法