Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231

Как вывести одно значение из массива list? Лучше использовать итератор или как-то по другому?

24.10.2016, 23:16. Показов 4445. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Что бы вывести одно значения из массива list нужно использовать итератор или можно как то по другому?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2016, 23:16
Ответы с готовыми решениями:

Как объединить одно значение многомерного массива по другому одинаковому значению
Есть многомерный массив с одинаковыми значениями stroka Array ( Array ( "stroka" =>...

List<string> или все же List<StringBuilder>, что лучше использовать?
Добрый день, хочется узнать с точки зрения производительности что подходит лучше в данном случае. Есть List&lt;List&lt;T&gt;&gt;, в...

Как лучше выдернуть значение из строки в котором эти значения делятся (сепаратором ::) или может быть одно
как лучше выдернуть значение из строки в котором эти значения делятся (сепаратором :: ) или может быть одно Я намудрил так ...

21
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
24.10.2016, 23:24
Helldrg, front(), back() для первого и последнего можно использовать.
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
25.10.2016, 00:00  [ТС]
А как третий элемент вывести?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
25.10.2016, 00:04
Цитата Сообщение от Helldrg Посмотреть сообщение
А как третий элемент вывести?
Тут и пригодятся итераторы.
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.10.2016, 00:22
Лучший ответ Сообщение было отмечено Helldrg как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <iterator>
#include <list>
 
int main() 
{
    std::list <std::string> l{ "first", "second", "third" };
    auto li = l.begin();
    std::advance( li, 2 );
    std::cout << *li << '\n';
}
std::advance
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 00:40  [ТС]
castaway
А если мне нужно выводить произвольный элемент, что лучше использовать vector или list?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.10.2016, 07:18
Helldrg, проще использовать вектор, но вообще, контейнер нужно выбирать в зависимости от задачи в целом.
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 12:42  [ТС]
castaway
Я так понял list нужен когда нужно постоянно все элементы выводить, например в listview. А вектор для чего применяется обычно?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
26.10.2016, 12:47
Helldrg, а Вы в курсе какие структуры данных они реализуют?
Если нет, то объяснять нет смыла, а если да, то такой вопрос не возник бы.
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 13:10  [ТС]
Croessmah
Глубокая мысль
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
26.10.2016, 13:14
Helldrg, перефразирую Ваш вопрос:
Для чего применяются массивы, в т.ч. расширяющиеся?
Ответите на этот вопрос, ответите на вопрос зачем нужен вектор,
который как раз и реализует функционал расширяющегося массива.
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 14:27  [ТС]
То переносят тему, теперь переименовали(((
castaway мне уже ответил. Про вектора это был дополнительный вопрос
Croessmah
Вообще можно делать так, если как у меня массив только увеличивается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template< typename T >
void Realloc(T *&arr, int size, int new_size)
{
    T *new_arr = new T[new_size];
 
    for (int i = 0; i < size; ++i)
    {
        new_arr[i] = arr[i];
    }
    
    delete[] arr;
 
    arr = new_arr;
}
А что лучше vector list или это я не могу ответить для этой цели, так как не знаком с list и vector. Можно тесты конечно проводить исходники типов этих читать, а можно спросить на форуме, где люди уже знают об этом все.
Как то так. Я задал дополнительный вопрос в надежде, что тут не будут говорить "ой да если ты не знаешь толку то вообще рассказывать", а просто выскажут мнение про list и vector. Так как это раздел с++ для начинающих (мою тему пока что не перенесли в тему с#) и тут подробно объясняют. Вот господин castaway уже в который раз ответил мне, причем достаточно развернуто!
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
26.10.2016, 14:31
Цитата Сообщение от Helldrg Посмотреть сообщение
просто выскажут мнение про list и vector
Вам уже ответили:
Цитата Сообщение от castaway Посмотреть сообщение
контейнер нужно выбирать в зависимости от задачи в целом.
но Вы, видимо, мимо пропустили эту информацию от castaway.
Без контекста задачи, выбрать что-то не представляется возможным.
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 14:47  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
но Вы, видимо, мимо пропустили эту информацию от castaway.
Я его внимательно слушаю, и спросил обычно где используется вектор. Но тут появились Вы и стали у меня вопросы задавать и убеждать, что задавать такие вопросы нет смысла.
Что бы вы поняли для меня вектор - это особый массив. И это все, что я об этом знаю. Мне скажут он используется там то. Я его изучу при необходимости, а если просто так его изучать так на все эти вещи времени не хватит. Может он применяется в задачах, которые мне никогда не придется решать
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
26.10.2016, 15:15
Цитата Сообщение от Helldrg Посмотреть сообщение
Я его внимательно слушаю, и спросил обычно где используется вектор.
Где? В теме этого нет.
Цитата Сообщение от Helldrg Посмотреть сообщение
Мне скажут он используется там то.
Он используется там, где нужен массив.
Цитата Сообщение от Helldrg Посмотреть сообщение
Может он применяется в задачах, которые мне никогда не придется решать
Вам это не удастся. И даже если не конкретно вектор,
то другая реализация той же структуры (массива) всё равно понадобится.
Отсюда следует:
Цитата Сообщение от Helldrg Посмотреть сообщение
что задавать такие вопросы нет смысла
поэтому я хочу убедить разобраться не с vector, list, а с соответствующими
структурами данных, т.е. с массивом и двусвязным списком.
Если Вы это сделаете, то вопросы где, что и для чего использовать не будут Вас мучить,
а осваивание конкретных реализаций этих структур
данных (vector, list) не составит вообще никакого труда.
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 16:14  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Где? В теме этого нет.
8 пост
Цитата Сообщение от Croessmah Посмотреть сообщение
Он используется там, где нужен массив.
Вода водяная, спасибо. Открыли глаза
Ну а в остальном я понял вашу позицию: иди читай сотни страниц чтобы просто ознакомиться с этим
а осваивание конкретных реализаций этих структур
данных (vector, list) не составит вообще никакого труда.
Что то я за 10 минут не нашел std::advance( li, 2 ), а сколько я должен был потратить времени, что бы узнать как выводить определенный элемент? Час, день, два дня?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
26.10.2016, 16:30
Цитата Сообщение от Helldrg Посмотреть сообщение
а сколько я должен был потратить времени
Если бы знали что такое итераторы, их типы,
что такое связанный список и массив - нисколько.

Добавлено через 4 минуты
Цитата Сообщение от Helldrg Посмотреть сообщение
Что то я за 10 минут не нашел std::advance( li, 2 )
Причем еще бы не мешало знать, что для list и vector advance будет работать
по разному из-за разных типов итераторов,
для List оно будет проходить по всем элементам от начального до нужного.
Поэтому в list для
Цитата Сообщение от Helldrg Посмотреть сообщение
А если мне нужно выводить произвольный элемент
advance даст сложность O(n), а в vector O(1).
Так что по факту, для двусвязного списка нет произвольного доступа вообще,
ну, кроме первого и последнего элементов, о чем Вам уже писали.
Если бы знали что такое списки и бла-бла-бла, то вопроса бы не возникло,
о чем я уже опять же писал.
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
26.10.2016, 16:30
Цитата Сообщение от Helldrg Посмотреть сообщение
Что то я за 10 минут не нашел std::advance( li, 2 ), а сколько я должен был потратить времени, что бы узнать как выводить определенный элемент? Час, день, два дня?
Думаешь тебя тут всему научат? Скажи спасибо, что сразу не отправили книги читать.
1
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
26.10.2016, 16:32
Цитата Сообщение от Helldrg Посмотреть сообщение
Что то я за 10 минут не нашел std::advance( li, 2 ),
http://www.cplusplus.com/refer... r/advance/
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
26.10.2016, 16:39  [ТС]
Вам легко говорить, вы это может в институте проходили, может у вас много свободного времени читали про stl и об этом узнали. А связанные списки и массивы я знаю. Я не понимаю как мне эти знания помогли бы в поиске функции std::advance( li, 2 ) или в вопросе где используются вектора. Судя по тому как Вы в цепились в массив, массив - std::vector аналогичен символьному массиву - std::string. Если это так, то да, затруднительно привести пример где это используется

Добавлено через 4 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Если бы знали что такое списки и бла-бла-бла, то вопроса бы не возникло,
о чем я уже опять же писал.
Вот это единственная причина почему я никогда не учил stl. Неизвестна реализация его и все тонкости!!! Кто его знает, может именно в list придумали произвольный доступ к элементам, может там какой то счетчик параллельно пишется.Я то откуда это знаю. Это все можно узнать так как исходный код открыт я полагаю, но время на изучение его будет потрачено очень много
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2016, 16:39
Помогаю со студенческими работами здесь

Как лучше реализовать большую таблицу? Массивом или по другому?
Здравствуйте, подскажите как правильно сделать вот такую таблицу? передавать 60 переменных в обработчик или как то можно массивом, если...

Как добавить элементы одного List к другому List
public class groupIndicators { public string Name { get; set; } //Наименование группы индикаторов public...

Как лучше присвоить большому количеству переменных одно и то же значение?
Раньше писал так: Меню.ForeColor = Color.Gold; Текст_фамилия.ForeColor = Color.Gold; Текст_имя.ForeColor = Color.Gold; ...

Как правильно вывести элементы массива используя итератор?
Ребят, помогите понять, почему вывод такой кривой? Я хочу получить вывод как указано в test9(), но выводит не то что надо. Буду очень...

Как значение массива другому массиву?
Здравствуйте! Вот код: #include&lt;iostream&gt; using namespace std; const int Max = 15; void reversit(char); int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru