jjzjj

c++ - STL算法删除容器中的所有对象?

是否有STL实用程序/算法来对所有对象执行delete*the_object_iterator;?这样我就可以安全地clear()了吗?STL容器是一个set,对象是指向使用new创建的C++类的指针。Boost似乎是最好的解决方案。我的目标是避免在不可复制的类上进行复制构造。 最佳答案 使用智能指针来保存类指针std::set>mySet; 关于c++-STL算法删除容器中的所有对象?,我们在StackOverflow上找到一个类似的问题: https://

c++ - 哪一个使用c++ STL容器或MFC容器?

对于每个STL容器,在visualc++中都有一个可用的MFC容器。哪个在什么意义上比另一个更好,你用什么?我一直使用STL容器是不是错了? 最佳答案 由于可移植性,我总是更喜欢STL容器。MFC容器几乎永远不会在Linux上可用。即使您不打算在Linux上使用您的代码...您也永远不知道future会发生什么。 关于c++-哪一个使用c++STL容器或MFC容器?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - 为什么我会随机出现段错误?

这对我来说很奇怪,但是当我启动我的程序时遇到了意外的随机段错误。有时它可以工作,有时它会崩溃。Dev-C++的调试器将我指向文件的一行:STL_construct.h/***@ifmaint*Constructsanobjectinexistingmemorybyinvokinganallocated*object'sconstructorwithaninitializer.*@endif*/templateinlinevoid_Construct(_T1*__p,const_T2&__value){//_GLIBCXX_RESOLVE_LIB_DEFECTS//402.wrongne

c++ - C# Collection<T> 的 C++ 等价物是什么?如何使用它?

我需要在C++中存储动态创建的某个基本类型的对象的列表/集合/数组(我是C++的新手)。在C#中我会使用泛型集合,我在C++中使用什么?我知道我可以使用数组:SomeBase*_anArrayOfBase=newSomeBase[max];但是我没有得到任何“免费”的东西-换句话说,我不能迭代它,它不会自动扩展等等。那么还有哪些选择呢?谢谢 最佳答案 有std::vector这是一个数组的包装器,但它可以扩展并自动执行。但是,这是一个非常昂贵的操作,所以如果您要进行大量插入或删除操作,请不要使用vector。(可以使用reserve

c++ - STL 迭代器 - 目的

STL迭代器的用途是什么?为什么程序员要创造这个概念? 最佳答案 迭代器允许您将算法与容器分开。只要您有开始和结束迭代器,并且知道迭代器的功能(随机访问等),您就可以在迭代器指定的范围内进行操作。例如,参见std::for_each、std::transform。通过这种方式,您可以只实现算法的一个版本,而无需为您希望算法在其上运行的每个容器编写一个新版本。 关于c++-STL迭代器-目的,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 将 python numpy 数组转换为 C++ STL vector

我正在寻找一种在C++中读取包含numpy数组的文本文件并将数据放入vector>的方法,谁能帮帮我?非常感谢。阿奇编辑:文本文件的格式[[[01][23][45][67][89]][[1011][1213][1415][1617][1819]][[2021][2223][2425][2627][2829]][[3031][3233][3435][3637][3839]]]也许更易读:[[[01][23][45][67][89]][[1011][1213][1415][1617][1819]][[2021][2223][2425][2627][2829]][[3031][3233][3

c++ - 从 char* 初始化 std::string 而不复制

我遇到这样一种情况,我需要处理大量(许多GB)数据:通过附加许多较小的(Cchar*)字符串构建一个大字符串修剪字符串将字符串转换为C++conststd::string进行处理(只读)重复每次迭代中的数据都是独立的。我的问题是,我想尽量减少(如果可能的话消除)堆分配的内存使用量,因为目前这是我最大的性能问题。有没有一种方法可以将C字符串(char*)转换为STLC++字符串(std::string)而无需std::string在内部分配/复制数据?或者,我可以使用stringstreams或类似的东西来重新使用大缓冲区吗?编辑:感谢您的回答,为了清楚起见,我认为修改后的问题是:如何有

c++ - 用于通过快速迭代按值从任何位置删除的容器

我正在尝试制作塔防游戏,我正在实现游戏map以在精确半径内快速查找实体。我让它与std::list一起工作(用于快速push_back实体指针,并且从列表的任何点删除都不错),但我发现迭代列表的1500个元素是超长的。我的游戏甚至无法达到10FPS。我将展示MSVS在探查器中显示的内容:在getEntitiesInRadius调用之后,接下来是!=运算符,它与列表末尾进行比较。接下来是==运算符调用。它以Debug模式运行。但我认为即使是调试迭代1500个元素也太长了。也许我这个说法错了? 最佳答案 我假设你的map在整个游戏中都是

c++ - g++ 排序函数警告

当我编译以下代码(-Wall-O2)时,g++发出警告arraysubscriptisabovearraybound...#include#includeusingnamespacestd;inta[10];intn;intmain(){sort(a,a+n);return0;}但是这段代码编译时没有任何警告:#include#includeusingnamespacestd;inta[100];intn;intmain(){sort(a,a+n);return0;}为什么会这样? 最佳答案 当在网上搜索与GCC中的-Warray-

c++ - 使用 C++11 迭代语法时从 STL 列表中删除

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Erasinganelementfromacontainerwhileinsidearange-basedforloopSimilartothis,您可以在使用新的for(autoitem:list)语法从STL列表中删除它吗?这是一个完整的例子(崩溃了!)#includeusingnamespacestd;intmain(){listli;li.push_back(4);li.push_back(5);li.push_back(6);for(autonum:li){if(num==5)li.remove(n