A std::vector<element>
обычно принимает 3 машинных слова в общей сумме + sizeof (element) * capacity()
памяти. Для типичных реализаций служебные данные состоят из указателей на начало, конец и текущий размер вектора. Сами элементы хранятся в непрерывной памяти. capacity()
обычно имеет место в два раза больше фактического количества элементов.
A std::map<element, int>
обычно занимает около 2 машинных слов в общей сложности + 3 машинных слова на элемент + [ sizeof (element) + sizeof (int)] * num_elements of memory. Для типичных реализаций служебные данные состоят из указателей на сохраненные элементы. Сами элементы хранятся в двоичном дереве с указателями на его родительский и два дочерних элемента.
С помощью этих эмпирических правил все, что вам нужно знать, - это среднее число символов в строке и общее количество чтобы узнать общее потребление памяти.
«принятый» пользовательский интерфейс для множественного выбора на iPhone должен использовать UITableView с галочками (т.е. не использовать UIPickerView для множественного выбора).
Однако, если необходимо, есть инструкции по подделке здесь http://www.iphonedevsdk.com/forum/iphone-sdk-development/14634-uipickerview-multiple-selection.html , создав пустое средство выбора и поместив поверх него табличное представление.