草庐IT

C++中STL的vector扩容机制

全部标签

c++ - 遍历 std::vector 以从 std::string 数组中查找匹配项,更简单的方法?

我循环遍历std::vector和std::string数组以从vector中找到匹配项。例子:#include#include#includeintmain(){std::coutmyVector;myVector.push_back("Word");myVector.push_back("Word2");myVector.push_back("Word4");myVector.push_back("Word6");myVector.push_back("Word7");std::stringmyStringArr[]={"Word","Word1","Word2","Word3",

c++ - 对 vector 中索引为奇数的数字进行排序

我想对具有奇数索引(索引从0开始)的vector中的数字进行排序。例如,如果我输入这个数字;1657320,程序必须返回:1256370。我的代码#include#includeusingnamespacestd;intmain(){inteded,n,_temp;size_ti;cout>>";cin>>n;vectorv_eded;v_eded.reserve(n);//nqederboshyerayiriramvektor-dacout>eded;v_eded.push_back(eded);}for(i=1;iv_eded[i+2]){_temp=v_eded[i+2];v_e

c++ - 如何在集合元素中重用 vector ?

所以我正在使用我的程序将我的RasperryPi相机流式传输到我的计算机,但是。下面列出的vector给我带来了问题。在大约30秒的流式传输后,它给了我std::bad_alloc。有没有办法在循环中一遍又一遍地重复使用这个vector(例如调整大小、清除)?这是简化的代码:while(isRunning){recv(Connection,received_message,sizeof(received_message),NULL);//receivingthesizeofimageinbytesfileSize=atoi(received_message);std::vectorfi

c++ - 在 dll 之间使用 STL 时遇到问题

我在一个dll中有一个vector(或字符串),通过它的引用或指针在另一个dll中修改它是否安全,例如将新成员推送到vector或更改字符串的值?不知何故,当我这样做时有时会发生崩溃,我不知道为什么。如果我只是在另一个dll中读取它,使用const指针或引用,它绝对安全吗?使用STLport怎么样?更安全吗? 最佳答案 如果你修改一个STL容器,删除或添加新元素到它,它通常涉及分配/取消分配内存。如果碰巧您使用驻留在一个DLL中的分配器分配了一些内存,然后在另一个DLL中释放内存-使用另一个分配器,驻留在另一个DLL中-那么您可能会

c++ - 使用 C++/STL 将 std::vector<CString> 展平为 multi_sz 的推荐方法是什么

我想将存储在std::vector中的字符串列表(ATL::CString)写入Windows注册表中的REG_MULTI_SZ值。我知道如何在普通C中执行此操作(迭代一次以获得总长度,分配一个缓冲区,将字符串复制到由“\0”分隔的缓冲区)。知道我使用STL尝试了以下操作(抱歉,我必须将VS2010与“foreach”一起使用):std::vectormultiline_sz;foreach(CStringentryinmyStringList){TCHAR*buf=entry.GetBuffer();multiline_sz.insert(multiline_sz.end(),&bu

c++ - 什么是 C/C++ for Windows 中基于共享内存的轻量级 IPC 机制?

我现在一直在从事一些C++项目,这些项目涉及使用窗口消息进行一些简单的IPC。在许多情况下,通过将数据放入共享内存段然后将指针传递到带有SendMessage的共享内存,一些额外的数据随窗口消息一起传递。称呼。一直重复这个很烦人,但在通过发明另一个IPC系统来解决这种沉闷的重复之前,我想问:是否有满足标准的现有框架?:用C或C++编写(我们在这里使用MSVC)尽可能少的依赖;在最好的情况下,它只是一些使用纯C++和Windows标准库的源文件,可以直接编译到应用程序/库中。适用于WindowsXP及更新版本基于窗口消息和共享内存段构建非常需要正确的错误报告(远程进程消失、远程进程不理解

用于 STL 容器的 C++ IDE

哪些C++IDE在Debug模式下原生支持STL容器View?一个IDE是VisualStudio,但我希望从它转移,并希望在Debug模式下使用STL容器。现在专门寻找WindowsIDE,欢迎使用其他操作系统IDE。 最佳答案 eclipse!“CDT调试现在支持使用GDB7.0或更高版本完全漂亮地打印STL结构。这意味着复杂的结构,如map、列表和vector,将以用户友好的方式显示。”(source)(CDT是Eclipse的C/C++开发工具) 关于用于STL容器的C++IDE

C++ Vector 给出难以置信的意外值(value)

我有这个代码:std::vectorloc;loc.push_back(cpx);loc.push_back(cpy);loc.push_back(play.GetSize().x);loc.push_back(70);std::cout在我正在制作的游戏中,但即使当我打印loc[2]和loc[3]的值时,它们与它们应该的值完全不同,当我运行这段代码时,我得到loc[3]等于70070而不是70.有人知道如何解决这个问题吗? 最佳答案 你还有一个cout没有endl或\n您忘记删除的代码中的某处。那个打印700,而70是代码示例中最

c++ - 为什么 std::vector::at() 即使启用了优化也需要边界检查?

Windows中的libstdc++-6.dll有问题。这段代码:#include#includeintmain(){std::vectorx(10);std::cout编译很好,但是当我运行它时,我收到一条错误消息说Theprocedureentrypoint_ZSt24__throw_out_of_range_fmtPKczcouldnotbelocatedinthedlllibstdc++-6.dll我的问题是不是如何解决这个问题(这很可能是dll的错误版本,我只需要修复PATH)。然而,这让我意识到了一些意想不到的事情:当我打开优化时,上面的代码运行良好(不管错误的dll),即

c++ - 如何删除 vector 中的元素。 (删除无效)

当我使用“删除”删除vector中的元素时,并没有清除内存。例如,我制作了一个大小为2000的vector。创建后程序使用1,5MB内存。当我执行删除调用时,不会清除任何内容。所有的元素都消失了。但它们仍在内存中。例如:#include#includeusingnamespacestd;intmain(){//Makesavectorof2000itemsvectortest(200000);//Pausefortestpurposesystem("pause");//eraseallelementstest.erase(test.begin(),test.end());//Pause