вектор занимает:
- первый параметр шаблона имеет тип
- второй необязательный параметр-распределитель
vector<int>
не является допустимым распределителем для строки.
Предполагая, что вам здесь не нужна карта, вы, вероятно, хотите:
vector< pair<string, vector<int> > > outerVec;
vector<int> vecInt1, vecInt2;
vecInt1.push_back( 1 );
vecInt1.push_back( 5 );
vecInt2.push_back( 147 );
outerVec.push_back( std::make_pair( std::string("Hello World"), vecInt1 ) );
outerVec.push_back( std::make_pair( std::string("Goodbye Cruel World"), vecInt2 ));
Если мы введем определения вещей:
typedef std::vector<int> inner_vectype;
typedef std::pair< std::string, inner_vectype > pair_type;
typedef std::vector< std::pair > outer_vectype;
Теперь повторяем:
for( outer_vectype::const_iterator iter = outerVec.begin(),
iterEnd = outerVec.end();
iter != iterEnd; ++iter )
{
const pair_type & val = *iter;
std::cout << val.first;
for( inner_vectype::const_iterator inIter = val.second.begin(),
inIterEnd = val.second.end(); inIter != inIterEnd; ++inIter )
{
std::cout << '\t' << *inIter;
}
std::cout << '\n';
}
Надеемся вывести что-то вроде:
Hello World 1 5
Goodbye Cruel World 147