我们的编码指南更喜欢const_iterator,因为它们比正常情况下快一点iterator.看起来编译器会在您使用时优化代码const_iterator.
这真的是对的吗?如果是的话,内部真正发生的事情会变得const_iterator更快吗?
编辑:我写了一个小测试来检查const_iteratorvs iterator,发现不同的结果:
对于迭代10,000个对象const_terator,花费几毫秒(大约16毫秒).但并非总是如此.有两次相等的迭代.
__attribute__((const))和__attribute__((pure))GNU C有什么区别?
__attribute__((const)) int f() {
/* ... */
return 4;
}
Run Code Online (Sandbox Code Playgroud)
VS
__attribute__((pure)) int f() {
/* ... */
return 4;
}
Run Code Online (Sandbox Code Playgroud) 如果我们将f和g定义为:
void f(const int *restrict a, const int *restrict b, int *c){ ... }
void g(const int * a, const int * b, int *c){ ... }
Run Code Online (Sandbox Code Playgroud)
如果restrict多余,我希望所有三个答案都是肯定的.
否则,为什么不呢?
不要考虑糟糕的编程习惯,比如抛弃const限定符.