|
|
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Обычное задание вектора с целыми числами. Код: plaintext А как задать вектор массивов челых чисел, что бы обращаться к ним так: Код: plaintext Попытка задать вектор как Код: plaintext Можно сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. А можно ли это сделать без обьявления структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:19 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Может стоит попробовать задать typedefом. Или создать вектор с типом указателя на инт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:29 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
И как можно typedefом? Дайте примеры! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:32 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Насколько я помню, тип, хранящийся в векторе должен иметь переопределенные операторы == и > поэтому можно например сделать вектор векторов и к нему обращаться как к многомерному. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:36 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
matsic...А можно ли это сделать без обьявления структуры? OFF/2 простите, что немного не по теме... И со структурой..но думаю, что может подтолкнуть на какие нить мысли... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. это пример из одной книги... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:39 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
matsicИ как можно typedefом? Дайте примеры! :) Это лишь мои предположения. Код: plaintext 1. 2. Вообще, --null-- предложил хороший вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:45 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
--null--Насколько я помню, тип, хранящийся в векторе должен иметь переопределенные операторы == и > Нет, только copy constructor и operator = . Цитата: Requirements for Container Elements Elements inserted into an STL container can be of any object type that supplies a public copy constructor, a public destructor, and a public assignment operator. The destructor may not throw an exception. Furthermore, associative containers such as set and map must have a public comparison operator defined, which is operator< by default. Some operations on containers might also require a public default constructor and a public equivalence operator. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 20:09 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
А вообще, Код: plaintext 1. чем не подходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 20:11 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
MasterZiv --null--Насколько я помню, тип, хранящийся в векторе должен иметь переопределенные операторы == и > Нет, только copy constructor и operator = . Цитата: Requirements for Container Elements Elements inserted into an STL container can be of any object type that supplies a public copy constructor, a public destructor, and a public assignment operator. The destructor may not throw an exception. Furthermore, associative containers such as set and map must have a public comparison operator defined, which is operator< by default. Some operations on containers might also require a public default constructor and a public equivalence operator. Странно. Как минимум это зависит от версии. Дело в том что я STL изучал на примере не очень современного для нынешнего времени компилятора Visual C++ 5.0 и он там требовал переопределения operator< для члена вектора. По ошибке можно было дойти до недр STL, где он применялся (if(*_F1 < *_F2) и так делее) Т.е. в ряде версий STL это точно требуется. И у какого-то автора (по-моему в "Эффективном использовании STL" было напиисан что мол STL требует эти операторы для реализации итераторов произвольного доступа, которые как раз предоставляет vector (и deque). Требуется == и <, а остальные операторы сравнения она на их основе сама достраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 20:46 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Да не может быть такого. Вектору-то нафига что-то сравнивать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 00:25 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Для реализации самого вектора казалось бы ни к чему Но imho необходимость появляется, когда выходят на свет итераторы произвольного доступа. Для них необходимо перепоределение > Они используются например в алгоритме sort sort(v.begin(),v.end()); как бы эта форма работала без итераторов произвольного доступа и без возможности сравнивания (>) элементов вектора? Получается когда мы создаем вектор по шаблону - итератор уже должен быть и уметь что-то там сравнивать, следовательно операторы должны быть определены к моменту объявления вектора. Я так думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 00:43 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Кстати, именно поэтому sort не умеет работать с list-ом - тот по своей природе не предоставляет итераторов произвольного доступа и поэтому list имеет свой встроенный медленный sort, который работает на двунаправленных итераторах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 00:45 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
--null--Для реализации самого вектора казалось бы ни к чему Но imho необходимость появляется, когда выходят на свет итераторы произвольного доступа. Для них необходимо перепоределение > Они используются например в алгоритме sort sort(v.begin(),v.end()); как бы эта форма работала без итераторов произвольного доступа и без возможности сравнивания (>) элементов вектора? Получается когда мы создаем вектор по шаблону - итератор уже должен быть и уметь что-то там сравнивать, следовательно операторы должны быть определены к моменту объявления вектора. Я так думаю. Не получается. Любому итератору глубоко пофиг поддерживается типом операция < или нет. Контейнеру, если он ассоциативный, нужно. Алгоритму - если это sort или, например, binary_search тоже нужно. Но не итератору. И то можно обойтись функтором типа less<T>. Итератор предоставляет доступ к элементу, он значения типов не сравнивает. Контейнеры не зависят от реализаций внешних алгоритмов. sort не может накладывать ограничения на vector и его итераторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 04:11 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
гм. А как же будет работать sort если нельзя сравнивать элементы контейнера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:21 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Требования итератора произвольного доступа Да и во многих статьях и книгах об этом же сказано. Что итераторы произвольного доступа требуют переопределения оператора < и других операторов сравнения. Если же все эти книги -статью неправильны - я в принципе готов предать их анафеме, хотя довольно странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 09:26 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Книжки выкидывать не к чему, они правильные. Для итераторов произвольного доступа действительно нужны операторы сравнения, только не надо их путать с comparator'ом с помощью которого сравниваются элементы контейнера, по умолчанию это less который использует оператор <. но можно любой свой закатаь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 10:37 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Согласен. Comparator сравнивает элементы, а < в итераторах сравнивает позиции. Просто я немного неправильно выразился. Но < все равно нужен :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 10:40 |
|
||
|
вопрос об STL
|
|||
|---|---|---|---|
|
#18+
Вся инициализация делается так Код: plaintext 1. 2. 3. 4. 5. После этого можно обращаться к my_vector как к двумерному массиву Все посты выше похожи на извращения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 18:49 |
|
||
|
|

start [/forum/search_topic.php?author=3DFace&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 409ms |
| total: | 570ms |

| 0 / 0 |
