草庐IT

stl_algobase

全部标签

C++ STL map::erase a non-existing key

关于C++STL映射,按键删除:-size_typemap::erase(constkey_type&x);删除不存在的key是否合法?即下面的片段可以吗?mapmymap;mymap['c']=30;mymap.erase('c');mymap.erase('c');mymap.erase('D');干杯 最佳答案 是的,事实上,std::map::erase()返回一个size_type,它指示已删除的键数。因此,它返回0表示没有删除任何内容,而返回1表示map已删除的内容。 关于C

c++ - 存储未初始化的 STL vector ?

我正在编写一个内部循环,需要将structs放置在连续存储中。我不知道这些struct中有多少会提前。我的问题是STL的vector将其值初始化为0,所以无论我做什么,都会产生初始化成本加上设置struct成员的成本他们的值(value)观。有什么方法可以阻止初始化,还是有一个类似STL的容器,带有可调整大小的连续存储和未初始化的元素?(我确信这部分代码需要优化,而且我确信初始化是一笔不小的开销。)另外,请参阅下面的评论以了解初始化发生的时间。一些代码:voidGetsCalledALot(int*data1,int*data2,intcount){intmvSize=memberVe

c++ - 存储未初始化的 STL vector ?

我正在编写一个内部循环,需要将structs放置在连续存储中。我不知道这些struct中有多少会提前。我的问题是STL的vector将其值初始化为0,所以无论我做什么,都会产生初始化成本加上设置struct成员的成本他们的值(value)观。有什么方法可以阻止初始化,还是有一个类似STL的容器,带有可调整大小的连续存储和未初始化的元素?(我确信这部分代码需要优化,而且我确信初始化是一笔不小的开销。)另外,请参阅下面的评论以了解初始化发生的时间。一些代码:voidGetsCalledALot(int*data1,int*data2,intcount){intmvSize=memberVe

c++ - GCC STL 边界检查

如何为operator[]和迭代器启用边界检查? 最佳答案 您可以通过使用-D_GLIBCXX_DEBUG编译来激活运行时迭代器和边界检查。另请注意,除了operator[]之外,随机访问容器还提供始终检查边界的at()操作。引用资料:GCCSTLDebug模式:http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.modeat()操作:std::vector::at(),std::deque::at()和std::

c++ - GCC STL 边界检查

如何为operator[]和迭代器启用边界检查? 最佳答案 您可以通过使用-D_GLIBCXX_DEBUG编译来激活运行时迭代器和边界检查。另请注意,除了operator[]之外,随机访问容器还提供始终检查边界的at()操作。引用资料:GCCSTLDebug模式:http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode_using.html#debug_mode.using.modeat()操作:std::vector::at(),std::deque::at()和std::

c++ - 是否有 STL 的可读实现?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion我在Linux上;查看STLheader;它们真的很复杂。是否存在具有STL核心功能但实际上可读的较小版本的STL?谢谢! 最佳答案 有一本书C++标准模板库,由最初的STL设计

c++ - 是否有 STL 的可读实现?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭8年前。Improvethisquestion我在Linux上;查看STLheader;它们真的很复杂。是否存在具有STL核心功能但实际上可读的较小版本的STL?谢谢! 最佳答案 有一本书C++标准模板库,由最初的STL设计

c++ - 如何更改 C++ STL vector 的特定元素

vectorl;for(inti=1;i现在,例如,如何将vector的第5个元素更改为-1?我试过l.assign(4,-1);它的行为不符合预期。其他vector方法似乎都不适合。我使用了vector,因为我需要在我的代码中使用随机访问功能(使用l.at(i))。 最佳答案 at和operator[]都返回对索引元素的引用,因此您可以简单地使用:l.at(4)=-1;或l[4]=-1; 关于c++-如何更改C++STLvector的特定元素,我们在StackOverflow上找到一个

c++ - 如何更改 C++ STL vector 的特定元素

vectorl;for(inti=1;i现在,例如,如何将vector的第5个元素更改为-1?我试过l.assign(4,-1);它的行为不符合预期。其他vector方法似乎都不适合。我使用了vector,因为我需要在我的代码中使用随机访问功能(使用l.at(i))。 最佳答案 at和operator[]都返回对索引元素的引用,因此您可以简单地使用:l.at(4)=-1;或l[4]=-1; 关于c++-如何更改C++STLvector的特定元素,我们在StackOverflow上找到一个

c++ - 那么在 STL 集合中可以安全地使用 unique_ptr 吗?

我对unique_ptr和右值移动哲学感到困惑。假设我们有两个集合:std::vector>autoCollection;std::vector>uniqueCollection;现在我预计以下操作会失败,因为不知道算法在内部做什么,并且可能会制作内部数据透视拷贝等,从而剥夺auto_ptr的所有权:std::sort(autoCollection.begin(),autoCollection.end());我明白了。并且编译器正确地不允许这种情况发生。然后我这样做:std::sort(uniqueCollection.begin(),uniqueCollection.end());然