Я имею в виду и почему это там? - PullRequest
0 голосов
/ 02 марта 2019

Я тоже новичок в кодировании.Недавно я изучил Принципы и практику с использованием C ++ , и внутри его кода всегда есть i, вставленный в его примеры.Некоторые из них находятся внутри функции «нижнего индекса» вектора или внутри «для операторов», таких как int i. Но он даже не сделал int с именем i, он просто есть.Может быть, я что-то пропустил во время чтения, я не знаю, но я надеюсь, что кто-то не против дать мне понять, почему он вставлен в места, в которые он помещен, или просто значение 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;
}

Ответы [ 4 ]

0 голосов
/ 02 марта 2019

Когда вы пишете программу, каждая объявленная вами переменная должна иметь значение, что-то представлять.

Это также относится к фрагменту книги, который вы только что прочитали, только к тому, что мы говорим о массивах.Как вы знаете, массивы - это набор значений одного типа.Поскольку это коллекция , это означает, что в этом массиве есть 1 или более значений.

Возникает вопрос: , если существует 1 или более значенийКак я могу получить доступ к одному конкретному значению этого массива? Вот где приходит i, который вы читаете.

Переменная i имеет значение положение массиваСейчас я работаю над , где "работа над" может означать чтение, запись и т. Д. Поскольку i - это переменная, она должна иметь тип данных, следовательно, запись int i.

Использование i в качестве переменной в этом контексте не является обязательным, но это очень распространенная практика.Например, если у вас есть матрица, вам понадобятся две такие переменные (одна для строк и одна для столбцов), которые, скорее всего, будут i и j.

Это также объясняет, почему мы используем i внутри for петли.По-английски это означает, что цикл работает с элементами, у которых есть коэффициент от 0 до размера массива.

i был объявлен как тип int в цикле for, но онтакже может быть объявлено до этого цикла.Что-то вроде:

int i=0;

...

for (i=0; i<...)
0 голосов
/ 02 марта 2019

i является частью соглашения, где оно обозначает iteration number.

. Оно было определено в цикле for:

for (int i = 0 ....

, который в основном утверждает, чтоВы начинаете с нуля итерации.Как только вы приобретете некоторый опыт, вы увидите, что итерации не всегда начинаются с нуля, поэтому i может быть инициализирован с другим значением (или вместо i может использоваться другое имя переменной).

Математически, i часто используется в контексте списка / массива: the ith element или summation from i=0 to i=n и т. Д.

0 голосов
/ 02 марта 2019

i - это целое число, используемое как переменная i ndexing.Вы часто видите это в циклах.

Сначала давайте подумаем о векторе и о том, как он выглядит.Вектор - это массив переменной длины.

Итак, если у нас есть vector с именем myVector с 5 элементами, то у нас есть нечто, похожее на

myVector:   item1    item2    item3    item4    item5

Теперь какмы указываем отдельные элементы ?Нам нужно будет индексировать каждый элемент.Традиционно (из математики) индексация начинается с 0. Итак, чтобы проиндексировать первый элемент, мы делаем myVector[0].Чтобы проиндексировать второй элемент, мы делаем myVector[1] и так далее.([] известен как оператор subscript . Вы также можете использовать myVector.at(0), myVector.at(1), но это используется менее.)

Теперь, что если мы хотим найтиминимальное или максимальное значение в векторе?Нам нужно проверить каждый элемент и сравнить их.Поэтому нам нужно выполнить итерацию (цикл) по всему массиву .

Как мы это сделаем?Как мы перебираем каждый и каждый элемент?Чтобы перебрать каждый элемент, нам нужно что-то, чтобы указать элементы.Чтобы пройти по каждому элементу, нам понадобится цикл.

Цикл в вашем коде делает это, перебирая от 0 до длины массива / вектора.

for (int i = 0; i < temps.size(); ++i)   // iterate through EVERY element of the vector
{
    //  access EACH element of using temps[i]
}
0 голосов
/ 02 марта 2019

i объявляется как переменная типа int, здесь:

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

У i есть область видимости только внутри цикла for.После завершения цикла, время жизни этой переменной i.

...