如何使用循环函数内创建的值?

时间:2017-10-13 07:25:01

标签: c++

我想知道哪一个是在循环之外使用在循环内创建的值的最佳方法。我有例如函数:

void Loop(int a)
{
  // recursion loop execution
for ( int i = 0; i < 10; i++ )
 {
  int new_a = a + i;
 }
}

我想用那个&#34; new_a&#34;因为它正在被环绕&#34;在绘制图形的另一个函数中,只需要&#34; yAxe&#34;值。像那样:

int main ()
{
int a = 5;
plot (x,Loop(int a);
}

我知道我可以使用循环的值创建一个数组,但我不想存储它们,而对于大的绘图则会有太多的内存。

2 个答案:

答案 0 :(得分:0)

当它们的范围完成时,任何局部变量都将被销毁。例如,代码new_a将在for循环结束时被销毁,并且a在函数完成时被销毁。我的意思是,如果你关心记忆,不要担心。

答案 1 :(得分:0)

如果我理解正确,您想多次致电Loop(a)(例如class LoopClass { public: LoopClass(int initial_value = 0) : current_value{initial_value} { } int operator()(int a) { return a + current_value++; } private: int current_value; }; )并且每次通话都应该获得循环的下一次“迭代”?

如果C ++有continuations,那就不容易了。相反,它可以通过使用类和对象以及运算符重载来模拟。

例如:

LoopClass Loop;  // The value initialized with zero

int a = 5;
std::cout << "First call : " << Loop(a) << '\n';
std::cout << "Second call: " << Loop(a) << '\n';

可以这样使用:

         <style>
         /***Student list***/

        ul#stdList{
        width:fit-content;
        margin:15px auto 10px auto;
        overflow:hidden;
        }

        ul#stdList li{
        letter-spacing:.05em;
        color:#0a93cd;
        display:block;
        float:left;
        font:24px arial;
        padding:7px 7px;
        margin:0px 4px;
        text-align:center;
        }

        ul#stdList li:hover{
        border-color:#444;
        }

        .img-circle {
        border-radius: 50%;
        }

     </style>

上面的代码,如果放入程序,应该打印

First call : 5
Second call: 6