CF
Қаз. 17, 2020, 11:35 Т.Қ.
Маленький вопрос для знатоков list
Всем привет, сегодня возникло недоумение, связанное с контейнером list. Может кто объяснить, почему одномерный list можно таким образом использовать как двумерный, и почему это вообще работает?
list
mylist[1].push_back(13); // почему это вообще работает?
mylist[1].push_back(15);
for (int i = 0; i <10; i++)
{
cout « i;
for (auto x : mylist[i]) { cout « " —> " « x; }
cout « endl;
}
Скрин с результатом. Я не понимаю, почему в list работает индексация, если пишут, что она не работает. И почему мы можем сделать список списков из одномерного списка.
5
94
Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Соңғы пікірлер
- ИМҚар. 22, 2024, 9:51 Т.Қ.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
- ИМҚаз. 5, 2024, 4:51 Т.Қ.Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
- Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
- Енді форумда талқылаңыз
- fАқп. 15, 2025, 1:46 Т.Қ.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
- Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Имелось ввиду это?
Вы создаете 10 пустых листов и по [1] обращаетесь к массиву из листов (тут может быть имассив int и любой другой массив), а не к элементу листа.
А тут:
вы уже обращаетесь непосредственно к элементам листа.
В данном примере строчка
mylist [10])
list mylist [10]; (правильнее будет std::list
создает клсассический массив на 10 элементов, елементами являются std::list
В результате получаем 10 листов
Строчки mylist[1].push_back(13); mylist[1].push_back(15); добавляют к одному листу (с инксом 1) сначала значение 13, а потом 15. Соответствующие значения предсказуемо выводятся экран.
Не совсем понятен вопрос "почему одномерный list можно таким образом использовать как двумерный, и почему это вообще работает?", а какое поведение врообще ожидалось?
Или напишите какое поведение Вам нужно, а я приведу пример кода с пояснениями "как оно работает..."
Почему вы считаете, что односвязный список не может быть х-мерным?
Я когда-то давно писал свой List:
В Qt push_back просто вызывает append, там такой код:
Ни кто не запрещает сделать 2-х мерный или даже трехмерный лист, например так
Спасибо, я уже понял, в чем было дело) меня запутали квадратные скобки и название простого массива "mylist". Я думал, что [10] это размер листа, а размер листа задается в круглых скобках. Да и в принципе не часто увидишь, что-бы создавали классический массив хранящий листы, еще и с названием mylist вместо arr.
к элементам списка нельзя через кв скобки обращаться, тк его элементы в памяти не расположены последовательно. Для этого существует метод at(index). Для вектора и обычного массива обращение через кв скобки безопасно.