Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> STL<map> и VC6+, <map> с фиксным к-вом эл-тов? 
:(
    Опции темы
bel_nikita
Дата 7.11.2003, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Что-то не пойму как создать ассоциативный список с фиксированным к-вом элементов.
Т.е. динамическое выделение мне не подходит. Количество элементов в списке должно быть фиксированное.

И еще, возможно ли избавиться от назойливого warning'а за номером 4786, кроме как #pragma warning(disable : 4786)




--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
SeregaLBN
Дата 7.11.2003, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.10.2003
Где: Киев

Репутация: нет
Всего: нет



Заверни map в свой класс, в конструкторе которого устанавливай необходимый размер.

От warning'a избавиться точно можно, я это видел, вроде бы, у Страуструпа.... Как точно - непомню. Найду, дам знать...

PM MAIL   Вверх
SeregaLBN
Дата 7.11.2003, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.10.2003
Где: Киев

Репутация: нет
Всего: нет



Нашёл.
Страуструп. Третье издание. Приложение Б (Совместимость) - Б.3.5. Шаблоны.
PM MAIL   Вверх
bel_nikita
Дата 7.11.2003, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата
Заверни map в свой класс, в конструкторе которого устанавливай необходимый размер.

map pавернут в класс, но как установить размер?
не мог бы привести пример.
я не совсем "дохожу" как вызвать конструктор, точнее как вообще создается список.
Я с STL еще ни разу не пробывал работать. А тут как раз подходящий случай мне подвернулся: надо создать ассоциативный список <ключ, значение>.

спасибо за warnin.


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
SeregaLBN
Дата 7.11.2003, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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;
}
PM MAIL   Вверх
bel_nikita
Дата 7.11.2003, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



SeregaLBN
спасибо!
ща буду эксперенменты ставитьsmile.gif


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.