草庐IT

C++中STL的vector扩容机制

全部标签

c++ - std::vector 的异常行为

我编写了一组相当复杂的类来处理流(字符串、文件或内存)的迭代。这些不是标准流,也不相关。无论如何,由于遍历这些缓冲区并根据缓冲区执行操作,我希望能够在调试器中看到当前缓冲区位置。因此,仅出于调试原因,我将整个流复制到一个vector,并保存指向该vector中某个位置的指针。下面的代码就像一个前向迭代器。我需要能够存储一个位置,然后使用它或更新它。请注意,此代码只是为了复制问题。classfoo{public:foo(std::stringszTemp):nOffset(0){vec.resize(szTemp.size());std::memcpy(&vec[0],szTemp.c_

17 标准模板库STL之list

基础知识        1、list是由双向链表实现的,这也意味着,其内存空间是不连续的。因此,list不支持随机访问,没有提供[]操作符重载和at()函数,迭代器只能进行++和--操作,不能进行+n和-n操作。由于底层使用链表实现,list在任意位置插入和移除元素都非常高效。list适用于需要经常进行插入和移除操作,但不需要经常随机访问的应用场景。        2、与vector不同,list没有内存空间预分配机制,也没有提供capacity()和reserve()函数。每插入一个元素,都会从内存中直接分配;每移除一个元素,都会直接释放它占用的内存。        3、使用list前,需要

java - 如何以编程方式设置 Vector Drawable 的组参数?

我有一个vector可绘制对象,我想根据应用程序中的某些输入来旋转它。我有一个vector_drawable.xml在我的代码中,我创建了一个ValueAnimatorValueAnimatoranimator=ObjectAnimator.ofInt(myDrawable,"rotate",0,360);animator.setDuration(500);animator.addUpdateListener(animatorUpdateListener);animator.start();animatorUpdateListener定义如下:animatorUpdateListene

c++ - 是否可以在类似 STL 的容器中使用 WinRT 对象?

我正在尝试为D3D应用程序创建一个简单的手势识别器。手势识别器的工作原理是将接收到的每个点存储到容量为3的boost::circular_buffer中,然后计算缓冲区中相似FrameID的数量,如下所示:UINTTrackball::CalculateGestureSize(Windows::UI::Input::PointerPoint^pPoint){//shiftthecircularbufferqueueoneifit'sfull(commoncase)if(m_pointQueue.full()){m_pointQueue.pop_back();}//thenstoreou

c++ - 结构 vector 上的 MemCpy

我使用MapVirtualFile在Window下使用C++VS2010映射文件。空白是void*m_pVoiceData;我现在想用数据填充一个结构vector。结构是structudtPitchmark{unsignedlongByteStart;unsignedlongByteCount;unsignedlongF0;};structudtPitchmarks{vectorPitchmarks;};我一直在用voidclsMapping::FeedPitchmarksFromMap(udtPitchmarks&uAudioInfo,unsignedlongintuBytePos)

windows - wininet API 的 P/Invoke 机制

我正在使用wininetapi将HTTPPOST发送到SSL服务器。我想使用P/Invoke将这些api包装到C#,因为C#中的原始代码。我如何将这些api包装到c#。我试过了,但没有用。我正在为WindowsMobile和智能手机做这个。LPCTSTRlpszAgent=_T("CeHttp");DWORDdwError;DWORDsizeInResult,sizeOutResult,sizeToWrite,sizeWritten,dwRead;HINTERNEThInternet=NULL;HINTERNEThConnect=NULL;HINTERNEThRequest=NULL;

windows - 我应该使用 OLE 剪贴板机制还是标准剪贴板 API?

我正在向现有的Windows应用程序添加复制和粘贴功能。ThisMSDNpage建议使用OLE剪贴板机制而不是标准剪贴板API。想知道对此的共识是什么?我认为OLE的东西已经死了一点,我不想让自己熟悉所有的类(class),除非有一些好处。 最佳答案 除非您需要OLE提供的工具,否则我会坚持使用老式的剪贴板。它更易于使用。 关于windows-我应该使用OLE剪贴板机制还是标准剪贴板API?,我们在StackOverflow上找到一个类似的问题: https:

windows - Win32 API中GetMessage()的内部机制?

在windows应用程序的消息循环中,GetMessage()函数会在消息队列中没有消息时挂起应用程序线程,但是当消息队列中有消息入队时,它是如何唤醒自己的呢?休眠线程如何唤醒自己?while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);} 最佳答案 线程不会唤醒自身。向它发送消息的线程将它唤醒。发送消息的部分过程包括唤醒消息的接收者。 关于windows-Win32API中GetMess

linux - Mercurial 回退更新机制

我们使用mercurial对多个存储库进行源代码控制。是否有任何自动方法可以先在DEV_USER分支上更新,如果不存在则更新到default分支?谢谢。 最佳答案 所选答案非常好,但我只是想把它放在这里:hgupdateDEV_USER||hgupdate如果你愿意,你可以输入一个mercurial别名[alias]myupdate=!$HGupdate$1||$HGupdate可以调用为hgmyupdatemaybe_exists 关于linux-Mercurial回退更新机制,我们在

windows - SysInternals WinObj 设备列表机制

SysInternals的WinObj可以列出所有设备对象。我想知道它如何列出设备。有没有我们可以阅读的开源代码?(或代码片段)我应该知道的最重要的功能是什么? 最佳答案 WinObj使用NT系统调用NtOpenDirectoryObject和NtQueryDirectoryObject。不需要驱动程序或内核代码。您不会看到导入,因为这些NT函数是通过LoadLibrary/GetProcAddress加载的。您不必枚举整个对象命名空间。如果您对设备对象感兴趣,请使用"\Device"调用NtOpenDirectoryObject,