|
|
|
Вектори или список???
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, господа. я начинающий программист и у меня вопрос по поводу использования векторов и списков. Как я понимаю, основное их отличие в том, что вектор позволяет получить доступ к любому элементу, а список только последовательно. получается вектор намного более мощный механизм. Вопрос: какие есть например ситуации в которых удобнее использовать список (класс <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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 17:27 |
|
||
|
Вектори или список???
|
|||
|---|---|---|---|
|
#18+
Staub Как я понимаю, основное их отличие в том, что вектор позволяет получить доступ к любому элементу, а список только последовательно. получается вектор намного более мощный механизм. Вопрос: какие есть например ситуации в которых удобнее использовать список вектор - доступ по индексу, операции вставки/удаления в конец и в начало вектора - константное время, операция вставки/удаления в середине вектора - линейное время. список - операции вставки/удаления за констнатное время независимо от позиции, но зато доступ к элементам только последовательный. Исходя из этого решайте, в каких задачах вам будет удобней исполльзовать вектор, в каких список. ... заданным итератором.но в списках это вызывает ошибку (см. ниже). подскажите пожалкйста. В сообщении об ошибке английским по фоновому написано, что нет оператора +, такого который принимал бы в качестве левого операнда тип list<char>::iterator. Первый вариант работает потому что итераторы, что для списка, что для вектора они implemented defined, и часто в случае вектора реализуются через простые указатели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 18:15 |
|
||
|
Вектори или список???
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 18:23 |
|
||
|
Вектори или список???
|
|||
|---|---|---|---|
|
#18+
Гм, не смею замахиваться на лавры господина МП, но все же не удержался: Срочно читать Герба Саттера "Новые сложные задачи на C++" Задача 1 Вектор: потребление и злоупотребление Всё разжевано и указаны типичные ошибки. Одну из них Вы допустили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2006, 18:59 |
|
||
|
Вектори или список???
|
|||
|---|---|---|---|
|
#18+
Staub Вопрос: какие есть например ситуации в которых удобнее использовать список (класс <list>)??? Необходимость частых вставок в произвольное место коллекции, а не только в конец. И вообще просто необходимость частых вставок (в векторе при расширении базовой памяти вектор копируется в новое место, это может быть долго). Staub и еще второй вопрос- есть два куска кода-1й-используется vector, 2й-list. они абсолютно идентичны. но возникает вопрос с функцие insert. В обоих случаях эта функция позволяет вставлять элемент, перед элементом, заданным итератором.но в списках это вызывает ошибку (см. ниже). подскажите пожалкйста. Это вопрос из серии "все коллекции одинаковые, но не всегда". Почитайте если очень нужно Меерса, эффективное использование STL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2006, 19:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33840857&tid=2030875]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 337ms |

| 0 / 0 |
