>f.vector.cpp: In function ‘int main()’:
>f.vector.cpp:15: ошибка: в ‘main()::channel’ используется локальный тип ‘main()::channel’
>f.vector.cpp:15: ошибка: при конкретизации ‘template<class _Alloc> class std::allocator’
>...Имелось в виду что-то вроде:
#include <vector>
#include <string>
#include <iostream>using namespace std;
struct channel
{ string name;
int value;
channel(const string &n, int v): name(n), value(v) {}
};
int main()
{ vector<channel> v;
v.push_back(channel("PCM", 15));
v.push_back(channel("VOL", 24));
v.push_back(channel("MIC", 8));
for(int i=0; i<3; i++)
cout<<v[ i].name<<": "<<v[ i].value<<endl;
return 0;
}
И оно прекрасно компиляется и работает.
А если уж использовать ассоциативный массив, то не multimap, а map, так как в первом возможно существование двух элементов с одним ключём (ключ у вас - это название канала), а это не ваш случай. Но одна из основных идей использования map - это обращение (поиск) к элементу по ключу. То есть для приведённого кода, что-то вроде ALL_MIX_DEV["PCM"] (для получения или установки соответствующего значения для канала PCM, например).
А вообще, лучше всего почитать Страуструпа, чтобы делать осознанный выбор. STL там довольно хорошо описан.