至于标题,可以vec.end()作为位置参数传递吗?即,是的行为
std::vector<int> vec;
vec.insert(vec.end(), 0);
Run Code Online (Sandbox Code Playgroud)
明确定义?
我讨厌定义.为了从旧的代码库中尽可能多地消除它们,我需要依靠枚举来定义包含数组的结构.不幸的是,当C项目包含被控制的.h文件时,我没有将其编译.
typedef struct _P_O {
enum { MAXELEMENTS=10 };
P_O_U elem;
ULONG id[MAXELEMENTS];
USHORT nid;
} P_O, *PP_O;
Run Code Online (Sandbox Code Playgroud)
这会产生错误C2208:
'type':没有使用此类型定义的成员
解析为类型名称的标识符在聚合声明中,但编译器不能声明成员.
OT:我讨厌使用10年代的编译器,不得不保留旧的C代码和糟糕的设计; 不只是定义:)
从文件中new:
如果第一个版本(1)无法分配存储,则会抛出bad_alloc.否则,它不会抛出异常(无抛出保证).
对我来说,这应该意味着这个代码
#include <new>
struct A{
A(){
throw 0;
}
};
int main(){
try{
A* a = new A;
}
catch(std::bad_alloc&){}
}
Run Code Online (Sandbox Code Playgroud)
很好.但是,当用gcc编译它时(见这里),程序在抛出后终止int.