индекс массива 2 находится за концом массива - PullRequest
0 голосов
/ 30 января 2020

Строковый массив d [2] должен иметь 3 элемента. Но, похоже, он может содержать только 2 элемента. Третий элемент не сохраняется в массиве. Какова причина? Это связано с распределением памяти, которое я сделал с оператором new ?

#include<iostream>

class A
{
public:
    A()
    {   
        std::string d[2];
        d[0] = "Dilshdur";
        d[1] = "Dilshad";
        d[2] = "Dolon";
        for(int i=0; i<3; i++)
        {
            std::cout<<d[i]<<std::endl;
        }

    }


};


int main()
{
   A *p;
   p = new A;
   return 0;
}

1 Ответ

1 голос
/ 30 января 2020

Кажется, что вы что-то упустили при чтении или изучении массивов, потому что размер, который вы указываете при определении массива, - это количество элементов, а не верхний индекс.

Итак

std::string d[2];

определит d как массив из двух элементов с индексами 0 и 1.


Если вы не Не знаю заранее количество элементов, затем используйте std::vector, так как это позволит вам динамически добавлять элементы во время выполнения.

...