powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вектори или список???
6 сообщений из 6, страница 1 из 1
Вектори или список???
    #33836468
Staub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, господа. я начинающий программист и у меня вопрос по поводу использования векторов и списков.
Как я понимаю, основное их отличие в том, что вектор позволяет получить доступ к любому элементу, а список только последовательно. получается вектор намного более мощный механизм. Вопрос: какие есть например ситуации в которых удобнее использовать список (класс <list>)???
и еще второй вопрос- есть два куска кода-1й-используется vector, 2й-list.
они абсолютно идентичны. но возникает вопрос с функцие insert. В обоих случаях эта функция позволяет вставлять элемент, перед элементом, заданным итератором.но в списках это вызывает ошибку (см. ниже). подскажите пожалкйста.

#include <vector>

using namespace std;
typedef vector<char> CHARVCTR;

CHARVCTR chVc;
CHARVCTR::iterator i;
int posit;
char ch = 'A';

sscanf(spinBox2->text(), "%d", &posit);//читаем из текстового поля значение
i = chVc.begin()+posit;
chVc.insert(i, (char)(ch+posit));


===============

#include <list>

using namespace std;
typedef list<char> CHARLIST;

CHARLIST chVc;
CHARLIST::iterator i;
int posit;
char ch = 'A';

sscanf(spinBox2->text(), "%d", &posit);//читаем из текстового поля значение
i = chVc.begin()+posit;//!!!возникает ошибка - текст ошибки ниже
chVc.insert(i, (char)(ch+posit));


===============

error C2678: binary '+' : no operator defined which takes a left-hand operand of type 'class std::list<char,class std::allocator<char> >::iterator' (or there is no acc
eptable conversion)
...
Рейтинг: 0 / 0
Вектори или список???
    #33836621
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staub
Как я понимаю, основное их отличие в том, что вектор позволяет получить доступ к любому элементу, а список только последовательно. получается вектор намного более мощный механизм. Вопрос: какие есть например ситуации в которых удобнее использовать список

вектор - доступ по индексу, операции вставки/удаления в конец и в начало вектора - константное время, операция вставки/удаления в середине вектора - линейное время.

список - операции вставки/удаления за констнатное время независимо от позиции, но зато доступ к элементам только последовательный.

Исходя из этого решайте, в каких задачах вам будет удобней исполльзовать вектор, в каких список.

... заданным итератором.но в списках это вызывает ошибку (см. ниже). подскажите пожалкйста.

В сообщении об ошибке английским по фоновому написано, что нет оператора +, такого который принимал бы в качестве левого операнда тип list<char>::iterator. Первый вариант работает потому что итераторы, что для списка, что для вектора они implemented defined, и часто в случае вектора реализуются через простые указатели.
...
Рейтинг: 0 / 0
Вектори или список???
    #33836648
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
std::advance
...
Рейтинг: 0 / 0
Вектори или список???
    #33839540
Pavel Kilevatyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм, не смею замахиваться на лавры господина МП, но все же не удержался:

Срочно читать Герба Саттера "Новые сложные задачи на C++"

Задача 1 Вектор: потребление и злоупотребление

Всё разжевано и указаны типичные ошибки. Одну из них Вы допустили.
...
Рейтинг: 0 / 0
Вектори или список???
    #33840851
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вектори или список???
    #33840857
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staub Вопрос: какие есть например ситуации в которых удобнее использовать список (класс <list>)???


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

Staub
и еще второй вопрос- есть два куска кода-1й-используется vector, 2й-list.
они абсолютно идентичны. но возникает вопрос с функцие insert. В обоих случаях эта функция позволяет вставлять элемент, перед элементом, заданным итератором.но в списках это вызывает ошибку (см. ниже). подскажите пожалкйста.


Это вопрос из серии "все коллекции одинаковые, но не всегда".
Почитайте если очень нужно Меерса, эффективное использование STL.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вектори или список???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]