循环前编写相同代码的替代方法

时间:2018-07-02 21:02:02

标签: c arrays

我想让for循环从头开始执行代码。但是,我的开始状态与结束状态相同。有什么方法可以在循环之前执行代码而无需编写代码?

for(int i = queue1->front; 
    i%queue1->size != queue1->front; 
    i++) {
    //some code
}

在代码中,我使用的是圆形数组,我想使用循环将其打印出来。

2 个答案:

答案 0 :(得分:3)

除了使用do-while-loop之外,您还可以在任何情况下使用标志进入循环:

from flask import Flask, request, url_for
from flask import redirect, jsonify
from db.db import BlogPost
from db import db

application = Flask(__name__)

db.init()

@application.route('/')
def apiRedirect():
    return redirect('/blogs')

@application.route('/blogs')
def getBlogs():
    blogs = BlogPost.objects()

    blogsarr = []
    for blog in blogs:
        blogsarr.append(blog.to_mongo())    

    return jsonify(blogsarr)

@application.route('/blogs/create', methods=['GET','POST'])
def createBlog():
    if request.method == 'POST':
        author = request.form['author']
        date = request.form['date']
        content = request.form['content']

        post = BlogPost(author=author, date=date,content=content)
        post.save()
        return "Posted"

    return jsonify(post.author, post.date, post.content)

如果愿意,您甚至可以将其直接集成到for循环头中:

int first = 1;
for (int i = queue1->front; i%queue1->size != queue1->front || first; i++){
    first = 0;
    //some code
}

答案 1 :(得分:2)

您可以简单地使用do while循环。您希望循环执行任意次数的情况,但至少有一种是这种循环的典型用例。

int i = queue1->front;
do { 
    //some code
    i++
} while(i%queue1->size != queue1->front)

另一个选择是确保第一次在for循环中的条件为true。有不同的方法可以做到这一点。一种方法是使用标志。

int flag = 1;
for( ... ; ... || flag; ... ) {
    flag = 0;
    ...
}

您可以使用goto。我不推荐它。

goto label;
int i=queue1->front; // Init will be skipped
                     // using this method
for(...) {
    label:
    ...
}

如果不想重复编写代码的原因只是为了避免重复的代码,则可以将其重构为一个函数。当然,您必须两次编写函数名称,但这可能还是一个改进。

myFunction();
for(...) {
     myFunction();
}