artbear писал(а) 10. Июля 2008 :: 13:27:kmsМихаил, по Вектору и коллекциям получается не всегда очевидное поведение.
это я тесты на Вектор пишу
- специально опечатался, и сразу и нарвался
Далее по методу Процедура Вставить(Индекс, Значение)
Сейчас - если Индекс больше/равен количества элементов, он вставляется в конец вектора, независимо от переданного индекса, а не в позицию с указанным индексом.
Соответственно пользователь может быть неверно проинформирован, т.к. он может считать, что он успешно вставил элемент в позицию Индекс
Т.е. опять неоднозначность.
Это поведение метода CSimpleVector::Insert
Варианты исправления:
1. Сделать как в стандартной библиотеке шаблонов std - сделать метод функцией и возвращать номер позиции, куда был вставлен элемент. При этом количество элементов увеличивается так, чтобы новый элемент поместился в указанной позиции.
2. Или явно запретить вставку элементов, в позиции с индексом больше, чем количество текущих элементов.
В этом случае вектор будет расти только при явном изменении размера через Вектор::ИзменитьРазмер или Вектор::Добавить.
Мне лично нравится п.2, как более стабильный и четкий.
Жду ответа.