![]() |
1
7
使用现有的std库coontainer并禁用异常编译的问题是std容器接口本身假定启用了异常。使用异常,如果operator new无法获取内存,它将抛出;没有异常,operator new将返回0,而std容器无法处理。 一种方法是只使用STL算法+向量。您可以使用这个复制其他容器所做的大约95%。问题是大多数STL实现都假定
永远不会断言(因为如果没有内存,保留将抛出)。为了确保这个永远不会抛出,我使用了“固定容量”容器,即在编译时具有固定容量的容器。基本上,这些是我传入一个特殊分配器的向量。然后您可以在插入前检查容器的最大\大小()。然后避免使用at()之类的东西。为了更好地预测,请使用基本字符串而不是向量。这将强制您只存储pod类型,在复制或默认构造时不会抛出。另外,内存需求更容易计算。 另一种方法是使用侵入式容器。这些不会抛出(也许是接口误用的外部),因为它们从一开始就不会获取内存。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |