'i' 意思是什么?

'i' meaning and why is it there?

我也是编码方面的新手。最近我一直在研究 使用 C++ 的原理和实践 ,在他的代码中总是有一个 i 插入到他的示例中。有的在"vector's subscript"函数里面,有的在"for statements"里面,比如int i.,但是他连一个叫i的int都没有弄出来,就在那里。也许我在阅读时错过了什么,我不知道,但我希望有人不介意告诉我为什么它被插入到它所在的位置,或者只是 i 的含义。


下面我从第148页拿了他的一个例子给大家看

int main()
{
    vector<double> temps; //temperatures
    double temp = 0;
    double sum = 0;
    double high_temp = 0;
    double low_temp = 0;

    while (cin>>temp) // read and put into temps
        temps.push_back(temp) ;

    for (int i = 0; i<temps.size(); ++i) // these 'i's
    {
        if(temps[i] > high_temp) high_temp = temps[i]; // and these
        if(temps[i] < low_temp) low_temp = temps[i];
        sum += temps[i]; // compute sum
    }

    cout << " High temperature: " << high_temp<< endl; // find high
    cout << " Low temperature: " << low_temp << endl; // find low
    cout << "Average temperature: " << sum/temps.size() << endl;
}

i声明为int类型的变量,这里:

for (int i = 0; .......)
{
   // 'i' used here
}
// 'i' cannot be used here

i 仅在 for 循环内有作用域。循环终止后,该变量的生命周期也会终止 i.

i 是约定的一部分,代表 iteration number.

已在for循环中定义:

for (int i = 0 ....

这基本上表明您是从第 0 次迭代开始的。一旦你获得了一些经验,你就会发现迭代并不总是从零开始,所以 i 可能会用不同的值初始化(或者可能使用不同的变量名而不是 i 完全) .

在数学上,i 通常用于 list/array 的上下文中:the ith elementsummation from i=0 to i=n

i 是一个整数,用作 i 索引变量。你经常在循环中看到它。

首先,让我们考虑一下矢量及其外观。矢量是可变长度数组。

因此,如果我们有一个名为 myVectorvector,其中包含 5 个元素,那么我们就会得到类似

的东西
myVector:   item1    item2    item3    item4    item5

现在我们如何指定个别项目?我们需要为每个项目编制索引。传统上(从数学上),索引从 0 开始。所以要索引第一个元素,我们做 myVector[0]。为了索引第二个元素,我们做 myVector[1],依此类推。 ([] 被称为 下标 运算符。您还可以使用 myVector.at(0)myVector.at(1),但这种使用较少。)

现在如果我们想找到向量中的最小值或最大值怎么办?我们需要检查每个项目并进行比较。所以我们需要迭代(循环)整个数组

我们如何做到这一点?我们如何遍历 eachevery 项目?要遍历 each 项目,我们需要一些东西来指定项目。要遍历每个项,我们需要一个循环。

代码中的循环执行此操作,从 0 迭代到 array/vector 的长度。

for (int i = 0; i < temps.size(); ++i)   // iterate through EVERY element of the vector
{
    //  access EACH element of using temps[i]
}

当你编写软件程序时,你声明的每个变量都必须有一个含义,必须代表一些东西。

你刚刚看的那本书片段也是这样,只不过我们说的是数组。如您所知,数组是相同值类型的值的集合。因为它是一个 集合 ,这意味着该数组中有 1 个 或更多 个值。

这提出了一个问题:如果有 1 个或多个值,我怎样才能访问该数组的一个特定值?这是您阅读的 i进来了。

变量i的含义是我现在正在处理的数组的位置,其中"working on"可以表示读取,写入,等。因为 i 是一个变量,它必须有一个数据类型,因此 int i 表示法。

在此上下文中使用 i 作为变量不是强制性的,但这是一种非常常见的做法。例如,如果您有一个矩阵,您将需要两个这样的变量(一个用于行,一个用于列),它们很可能是 ij.

这也解释了为什么我们在 for 循环中使用 i。在英语中,这意味着循环使用系数从 0 到数组大小的元素。

ifor 循环中被声明为 int 类型,但它也可以在该循环之前声明。类似于:

int i=0;

...

for (i=0; i<...)