在C++的早期,当它被用螺栓固定在C之上时,你不能使用NULL,因为它被定义为(void*)0.你不能将NULL分配给除了之外的任何指针void*,这使得它变得毫无用处.在那些日子里,人们接受了你使用0(零)空指针.
直到今天,我继续使用零作为空指针,但我周围的人坚持使用NULL.我个人认为给NULL现有值一个name()没有任何好处- 因为我也喜欢将指针测试为真值:
if (p && !q)
do_something();
Run Code Online (Sandbox Code Playgroud)
然后使用零更有意义(如果你使用NULL,你不能逻辑使用p && !q- 你需要明确比较NULL,除非你假设NULL是零,在这种情况下为什么使用NULL).
有没有客观的理由偏好零而不是NULL(反之亦然),或者只是个人偏好?
编辑:我应该添加(并且最初要说)使用RAII和异常,我很少使用零/ NULL指针,但有时你确实需要它们.
检查元素是否包含在数组/列表中的C++方法是什么,类似于inPython中的运算符?
if x in arr:
print "found"
else
print "not found"
Run Code Online (Sandbox Code Playgroud)
与Python的in运算符相比,C++等价物的时间复杂度如何?
例如,我有这个数组:
int myArray[] = { 3, 6, 8, 33 };
Run Code Online (Sandbox Code Playgroud)
如何检查给定变量x是否在其中?
我是否必须编写自己的函数并循环数组,还是在现代c ++中与in_arrayPHP 相当?
假设我有一个存储在a中的输入char c,并且在条件中我需要检查它是否是两个不同的字符,例如'n'和'N'.很明显,我可以使用逻辑OR运算符进行条件化:
if(c == 'n' || c == 'N')
...
Run Code Online (Sandbox Code Playgroud)
但是,如果只有两个以上的条件,则需要使用更多的逻辑运算符,编写,查看和编辑将变得冗长乏味.有没有办法压缩这个过程?为了使它看起来像这样的东西:
if(c == '[N][n]')
...
Run Code Online (Sandbox Code Playgroud)
有什么类似的存在吗?