![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Что-то не пойму как создать ассоциативный список с фиксированным к-вом элементов.
Т.е. динамическое выделение мне не подходит. Количество элементов в списке должно быть фиксированное. И еще, возможно ли избавиться от назойливого warning'а за номером 4786, кроме как #pragma warning(disable : 4786) |
|||
|
||||
| SeregaLBN |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 3.10.2003 Где: Киев Репутация: нет Всего: нет |
Заверни map в свой класс, в конструкторе которого устанавливай необходимый размер.
От warning'a избавиться точно можно, я это видел, вроде бы, у Страуструпа.... Как точно - непомню. Найду, дам знать... |
|||
|
||||
| SeregaLBN |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 3.10.2003 Где: Киев Репутация: нет Всего: нет |
Нашёл.
Страуструп. Третье издание. Приложение Б (Совместимость) - Б.3.5. Шаблоны. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
map pавернут в класс, но как установить размер? не мог бы привести пример. я не совсем "дохожу" как вызвать конструктор, точнее как вообще создается список. Я с STL еще ни разу не пробывал работать. А тут как раз подходящий случай мне подвернулся: надо создать ассоциативный список <ключ, значение>. спасибо за warnin. |
|||
|
||||
| SeregaLBN |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 3.10.2003 Где: Киев Репутация: нет Всего: нет |
Держи
//#define UNICODE #ifdef UNICODE #pragma comment(linker, "/ENTRY:wWinMainCRTStartup") #define _UNICODE #else #pragma comment(linker, "/ENTRY:WinMainCRTStartup") #endif // UNICODE #include <windows.h> #include <windowsx.h> #include <tchar.h> #pragma warning(disable:4786) #include <map> #include <vector> typedef int KEY; typedef TCHAR VALUE; typedef std::map<KEY, VALUE> MAP_KeyValue; typedef std::vector<KEY > VECTOR_Key; typedef std::vector<VALUE> VECTOR_Value; class CEnvelopeMap { private: mutable MAP_KeyValue map; public: CEnvelopeMap(const VECTOR_Key &key, const VECTOR_Value& value) { size_t size = key.size(); if (size != value.size()){ // error return; } for (int i=0; i<size; i++) { map[key[i]] = value[i]; } } // Здесь добавляй прочие методы не меняющие размер map. // Типа следующих: size_t GetSize() const {return map.size();} VALUE& operator[](const KEY &key) {return map[key];} const VALUE operator[](const KEY &key) const {return map[key];} }; int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpszCmdLine, int nCmdShow ) { const size_t max = 5; VECTOR_Key key; VECTOR_Value val; key.resize(max); val.resize(max); // заполняеш своими значениями for (int i=0; i<max; i++) { key[i] = i; val[i] = TEXT('0') + i; } // создание map CEnvelopeMap Map(key, val); { // выборка Map[0]; VALUE& val1 = Map[1]; // выборка на чтение/запись val1 = TEXT('X'); // можешь менять - меняется и в Map VALUE val2 = Map[2]; // выборка на чтение/запись val2 = TEXT('Y'); // можешь менять - но в Map значение _НЕ_ меняется const VALUE val3 = Map[3]; // выборка только на чтение //val2 = TEXT('Z'); // ERROR - нельзя менять } return 0; } |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
SeregaLBN
спасибо! ща буду эксперенменты ставить |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |