Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Шаблоны


Автор: MadDog__ 11.8.2012, 01:08
Добрый вечер!

с шаблонами работал в скользь поэтому вопрос?

каким воспользваться стандартным ассоциативным шаблоном из STL что бы по ключу я мог сохранять и востанавливать 2 значения и более(ключ int, значение1 int, значение2 int) если можно приведите пример обьявления такого контейнира.

и еще можно будет такой контейнер поместить в <vector>  зарание благодарен откликнувшимся)))

Автор: baldina 11.8.2012, 01:19
Код

struct foo {
  int bar1, bar2;
  foo (int a, int b) : bar1(a), bar2(b){}
};

typedef std::map<int,foo> FooMap;
typedef std::vector<FooMap> FooMapVector;

int main () {
  FooMapVector vec;
  for (int i=0; i < 10; ++i) {
    FooMap map;
    for (int j=0; j < 10; ++j) {
       map[j] = foo(i,j);
    }
    vec.push_back (map);
  }
}

Автор: MadDog__ 11.8.2012, 08:02
Благодарю)))  smile 

Автор: disputant 12.8.2012, 13:38
Если не строго два - то 
map<key, vector<value> >
и, соответственно,
vector<map<key, vector<value> > >
?

Автор: Peter 16.8.2012, 12:24
Вместо введения структуры foo можно использовать стандартный std::pair<int, int>.

Автор: borisbn 16.8.2012, 12:59
Цитата(Peter @  16.8.2012,  12:24 Найти цитируемый пост)
Вместо введения структуры foo можно использовать стандартный std::pair<int, int>.

а вытаскивание из такого мапа выглядело бы так
Код
std::map< int, std::pair< int, int > >::const_iterator found = m.find( 10 );
int x = found->second.first; // очень красиво... и главное - "понятно"
  smile 

а если завтра потребуется 3 параметра ?

Цитата(disputant @  12.8.2012,  13:38 Найти цитируемый пост)
map<key, vector<value> >

а если этим третьим параметром будет std::string ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)