- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
灵感来自 this .
假设我们有一个非空的 std::vector<T> v;
有什么区别吗
for (int i = v.size() - 1; i >= 0; i--) {
///Stuff.
}
和:
for (int i = v.size(); i--; ) {
///Stuff.
}
?
我的意思是,为了可读性我不会那样做,但谁知道什么对生活有用......
(Here 只是一个测试,看看它们是等价的)
编辑:重点是 i
作为向后访问 vector 的索引(在索引比迭代器更可取的情况下)
最佳答案
人们可以想到 for
循环
for (<decl-init> ; <condition> ; <post-adjust>) <body>
粗略相当于 while
循环:
<decl-init>;
while (condition) {
<body>;
<post-adjust>;
}
for
之间的最大区别上面的重写是在<decl-init>
中声明的变量范围 block ,但这对下面的分析并不重要。
将两个循环重写为 while
循环给你这个:
int i = v.size() - 1;
while ( i >= 0 ) {
<body>;
i--;
}
对比
int i = v.size();
while (i--) {
<body>;
}
如您所见,唯一的区别是 i
在进入迭代前递减,条件以i
开始大于1
比第一个循环。这两个调整“相互抵消”,使您的循环从技术角度来看是等效的。不过,美学是另一回事:有副作用的条件比“纯”条件更难理解,因此第一个循环更具可读性。
关于c++ - 玩弄 for arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305206/
我在 Snow Leopard(10.6) 上玩 py2app,运行时遇到了一些问题 python setup.py py2app 我收到以下错误:- % python setup.py py2app
受此启发SO answer ,我有这段代码,它可以工作,但它会弹出并且听起来不太流畅。 $('.btn').each(initDraggable); function initDraggable()
我读了this article recently ,为了好玩,我尝试通过执行以下操作来覆盖 libc printf 函数:- 创建一个使用 printf 打印的可执行文件 这是一个测试(printer
灵感来自 this . 假设我们有一个非空的 std::vector v;有什么区别吗 for (int i = v.size() - 1; i >= 0; i--) { ///Stuff. } 和:
在开始实际工作之前,我目前正在尝试使用 ARC 来弄清楚一些事情。我确实设置了这段代码: NSNumber* n = [[NSNumber alloc] initWithInt:3]; __weak
我是一名优秀的程序员,十分优秀!