草庐IT

MIN_CONTAINER_SIZE

全部标签

c++ - boost::ptr_container 和 std::vector<shared_ptr>

看完timdaysanswer至thisquestion我很好奇boost::ptr_container之间的区别和一个std::vector.我的印象是aboost::ptr_containerhadownershipoverthepointersgiventoit,并且在释放时将调用它包含的所有指针的析构函数,而不管对其居民的其他引用。这与std::vector的目的相反,如果引用计数为0,释放后只会释放指针本身?如果是这种情况(我假设不是),为什么甚至Boost文档示例comparethetwo好像它们的目的相似,为什么timday的回答会提出boost::ptr_contain

c++ - std::multiset<int> 与 std::map<int, std::size_t> 用于保持多个可重复整数值

我想创建一个记录来保存关于的信息a)存在什么样的元素,b)出现的每种元素的数量在树的一个节点中。我会明确地只为叶节点存储这些信息,而父节点的信息可以通过组合它所有子节点的信息来获得(例如,子节点1有3个A对象,1个B对象,子节点2有1个A的对象,C的2个对象--parent有4个A的对象,1个B的对象和2个C的对象)。从父节点请求此信息时,我会小心不要先请求、使用和丢弃子节点的信息,然后再为其父节点请求,但是向上构造将是一个常见的手术。其他两个常见操作直接源self存储的内容:是否存在类型X的对象?和存在多少类型X的对象?还有如何存在多种对象?对象种类以整数表示,对象编号始终为整数值。

c++ - std::queue::size 的大 O() 顺序是什么?

std::queue类在size成员函数的复杂性方面并不清楚。它似乎是基于当时使用的数据结构实现。一个人会假设size是O(C),但它完全有可能是O(N)。显然,我可以保持自己的大小,但我宁愿只调用size。(修改问题):既然deque是默认容器,那么std::deque::size()的O()是多少? 最佳答案 至少自C++11以来,std::queue::size的复杂度isconstant:O(1)。根据§23.6.3.1/1,std::queue的底层容器必须满足SequenceContainer的要求,这一点得到了保证。,

c++ - 循环中的 Stroustrup 和溢出 size_type

我正在阅读BjarneStroustrup的“使用C++的编程原则和实践”,我需要对我在第25.5.3节中发现的令人惊讶的部分进行澄清。作者声称如果我们想遍历std::vector,然后使用像这样的循环变量for(vector::size_typei=0;i不如对vector使用迭代器安全类:for(vector::iteratorp=v.begin();p!=v.end();++p)因为,作为无符号类型,i可能会溢出。他指出使用迭代器的循环没有这样的限制。我有点困惑,因为我了解到size_type保证足够大以表示可能的最大vector,因此size_type类型的变量永远不会在这样的

C++ vector::size_type:有符号与无符号;整数与长

我一直在通过在不同平台上编译我的应用程序来对其进行一些测试,从64位系统到32位系统的转变暴露出许多问题。我大量使用vector、字符串等,因此需要对它们进行计数。但是,我的函数也使用32位无符号数,因为在许多情况下我需要显式使用正整数。我在处理看似简单的任务时遇到了问题,例如std::min和std::max,它们可能更系统化。考虑以下代码:uint32_tgetmax(){return_vecContainer.size();}看起来很简单:我知道一个vector不能有负数的元素,所以返回一个无符号整数是完全合理的。voidsetRowCol(constuint32_t&r_row

c++ - size_t ptrdiff_t 和地址空间

在我的系统上,ptrdiff_t和size_t都是64位。我想澄清两件事:我相信由于地址空间的限制,没有数组可以像size_t一样大。这是真的吗?如果是,那么是否可以保证ptrdiff_t能够保存最大数组中任何指针的减法结果? 最佳答案 不,没有这样的保证。例如,请参见此处:https://en.cppreference.com/w/cpp/types/ptrdiff_tIfanarrayissolarge(greaterthanPTRDIFF_MAXelements,butlessthanSIZE_MAXbytes),thatth

c++ - 一种按索引过滤范围,仅从过滤后的索引中获取 min_element 的方法?

在这个问题的评论中is-there-a-way-to-iterate-over-at-most-n-elements-using-range-based-for-loop还有一个问题-是否可以在容器上使用“索引View”,即过滤掉一些索引的子范围。此外,我遇到了一个问题,即从一个范围内找到最小值,并过滤掉了一些索引。即是否可以用std和/或boost算法、过滤器替换如下代码,以使其更具可读性和可维护性:templateautofindMin(constRange&range,IndexPredicateipred)->boost::optional{boolfound=false;ty

c++ - size_t 在哪里定义的?

所以我知道CCompatabilityHeaders中的任何标题:Placesintheglobalnamespaceeachnamethatthecorrespondingcxxxheaderwouldhaveplacedinthestdnamespace我还知道这些C头文件自c++17起已被弃用。,支持它们的兼容性“cxxx”对应物。现在,我相信size_t完全由StandardDefinesHeader定义.所以我认为这在技术上意味着全局命名空间中size_t的定义已被弃用?多年来我一直将它用作size_t,在我开始使用std::size_t之前,我希望得到确认。

c++ - `size` 来自哪里?

我知道在某个地方应该有一个我不关心的删除运算符。我只是想知道,哇,它奏效了。“大小”的说法从何而来?#include#includeclassBase{public:Base(){}void*operatornew(unsignedintsize,std::stringstr){std::cout结果如下:记录新对象“基本实例1”的16字节分配 最佳答案 由编译器在编译时提供。当编译器看到:new("Baseinstance1")Base;它将添加一个调用:Base::operatornew(sizeof(Base),"Basein

c++ - 到处使用 std::size_t 是一种好习惯吗?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whentousestd::size_t?我的代码中有很多常量是无符号数,例如计数器、截止频率、长度等。我开始对所有这些使用std::size_t,而不是int或unsignedint。这样做对吗?我启动它是因为STL容器将它用于它们的大小,它用于字符串位置等。