在循环中使用break语句是不好的做法?for
说,我在数组中搜索一个值.比较for循环内部和找到值时,break;退出for循环.
这是一种不好的做法吗?我已经看到了使用替代:定义一个变量vFound,当被发现的价值它设置为true,并检查vFound在for语句条件.但是,是否有必要为此目的创建一个新变量?
我在正常的C或C++ for循环的上下文中询问.
PS:MISRA编码指南建议不要使用break.
我看到了一个我以前从未见过的循环:
for (int i = 0; i < (1 << list.Count); i++)
Run Code Online (Sandbox Code Playgroud)
我无法理解是什么(1 << list.Count)意思,也许有人可以解释我这个?
我遇到过这种for循环布局:
#include <iostream>
int main()
{
{
for (int i = 0; i != 10; ++i)
{
std::cout << "delete i->second;" << std::endl;
}
}
{
for (size_t i = 0; i < 20; ++i)
{
std::cout << "delete m_indices[i];" << std::endl;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道这个额外的支撑层是什么用的?这在我们的代码库中出现了几次.
是否有jQuery方法对对象的成员执行迭代,例如:
for (var member in obj) {
...
}
Run Code Online (Sandbox Code Playgroud)
我只是不喜欢这个for从我可爱的jQuery符号中伸出来!
如何从地图中删除选定的键?delete()与范围结合是否安全,如下面的代码?
package main
import "fmt"
type Info struct {
value string
}
func main() {
table := make(map[string]*Info)
for i := 0; i < 10; i++ {
str := fmt.Sprintf("%v", i)
table[str] = &Info{str}
}
for key, value := range table {
fmt.Printf("deleting %v=>%v\n", key, value.value)
delete(table, key)
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试解决3n + 1问题,我有一个for看起来像这样的循环:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试使用GCC编译时,我收到此错误:
3np1.c:15:错误:'for'循环初始声明在C99模式之外使用
我不知道C99模式是什么.有任何想法吗?
我正在使用这个JavaScript迭代一个数组并找到一个匹配的数组元素:
var remSize = [],
szString, remData, remIndex, i;
for (i = 0; i < remSize.length; i++) {
// I'm looking for the index i, when the condition is true
remSize[i].size == remData.size ? remIndex = i : remIndex = -1;
}
Run Code Online (Sandbox Code Playgroud)
该数组包含这些"大小":["34", "36", "38"...].
remData.size 是我正在寻找的"大小"(例如"36").
i如果我正在搜索的大小在索引中,我需要返回索引.否则我需要回来-1.有一个更好的方法吗?
我有一个叫做类Writer的函数writeVector有这样的函数:
void Drawer::writeVector(vector<T> vec, bool index=true)
{
for (unsigned int i = 0; i < vec.size(); i++) {
if (index) {
cout << i << "\t";
}
cout << vec[i] << "\n";
}
}
Run Code Online (Sandbox Code Playgroud)
我试图不要重复代码,同时仍然担心性能.在函数中,我正在if (index)对我的for-loop的每一轮进行检查,即使结果总是相同的.这反对"担心表现".
我可以通过将检查放在我的for-loop 之外来轻松避免这种情况.但是,我会得到大量重复的代码:
void Drawer::writeVector(...)
{
if (index) {
for (...) {
cout << i << "\t" << vec[i] << "\n";
}
}
else {
for (...) {
cout << vec[i] << "\n";
}
} …Run Code Online (Sandbox Code Playgroud) 我在配备2.7 GHz Intel Core i7的笔记本电脑上运行以下Java代码.我打算让它测量完成2 ^ 32次迭代循环所需的时间,我预计大约需要1.48秒(4/2.7 = 1.48).
但实际上它只需要2毫秒,而不是1.48秒.我想知道这是否是下面任何JVM优化的结果?
public static void main(String[] args)
{
long start = System.nanoTime();
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++){
}
long finish = System.nanoTime();
long d = (finish - start) / 1000000;
System.out.println("Used " + d);
}
Run Code Online (Sandbox Code Playgroud) 我有这个for-in循环:
for button in view.subviews {
}
Run Code Online (Sandbox Code Playgroud)
现在我想将按钮转换为自定义类,以便我可以使用它的属性.
我试过这个: for button in view.subviews as AClass
但它不起作用,并给我一个错误:'AClass' does not conform to protocol 'SequenceType'
我试过这个: for button:AClass in view.subviews
但这也不起作用.