- Двухмерный вектор , tx2, 02:28 , 25-Окт-07 (1)
- Двухмерный вектор , siegerstein, 02:54 , 25-Окт-07 (3)
>[оверквотинг удален] >вариант в лоб: > >std::vector< std::vector< int > > test; > >std::vector< int > v1; >v1.push_back(1); >v1.push_back(2); >v1.push_back(3); >test.push_back(v1); >v1.clear(); Спасибо tx2, вышло. Мне надо было бы что бы в первой мерности были к примеру string, а во второй int. Но как я понимаю с векторами это не выйдет. Есть ли идеи как это сделать? А то придется переводить из string в int....
- Двухмерный вектор , jd, 02:50 , 25-Окт-07 (2)
- Двухмерный вектор , siegerstein, 02:57 , 25-Окт-07 (4)
>[оверквотинг удален] >vv.push_back(vector<string>()); >vv[2].push_back("string 31"); >vv[2].push_back("string 32"); > >for(int i=0; i<3; i++) > for(int j=0; j<2; j++) > cout<<vv[ i][j]<<endl; > > >С размерностями только осторожнее: строки (второй индекс) могут быть разных размеров. Спасибо jd, не успел ответить tx2 как тут еще один примерчик :) Сейчас и это попробую для разнообразия )
- Двухмерный вектор , siegerstein, 03:03 , 25-Окт-07 (5)
>[оверквотинг удален] >>for(int i=0; i<3; i++) >> for(int j=0; j<2; j++) >> cout<<vv[ i][j]<<endl; >> >> >>С размерностями только осторожнее: строки (второй индекс) могут быть разных размеров. > >Спасибо jd, не успел ответить tx2 как тут еще один примерчик :) > >Сейчас и это попробую для разнообразия ) С векторами разобрался, теперь вопрос как засунут разные типы данных в вектор, или как это можна сделать :) Что-то типа такого: std::vector< std::vector< int > > test; std::vector< int > v1; std::vector< std::string > v2; v1.push_back(15); v1.push_back(24); v1.push_back(8); v2.push_back("PCM"); v2.push_back("VOL"); v2.push_back("MIC"); test.push_back(v1); test.push_back(v2); Но это понятно не сработает. Если ли какие-то способы?
- Двухмерный вектор , jd, 03:18 , 25-Окт-07 (7)
- Двухмерный вектор , DeadMustdie, 09:30 , 25-Окт-07 (9)
- Двухмерный вектор , siegerstein, 17:24 , 25-Окт-07 (10)
>>Мне надо было бы что бы в первой мерности были к примеру string, а во второй int. > >Может multimap использовать? Или не подойдёт? Спасибо, как раз подошло! http://www.cppreference.com/cppmap/all.html Кусок моей реализации (OSS /dev/mixer): std::multimap<std::string, int> ALL_MIX_DEV; // List of ALL avaible devices for (int i = 0; i < SOUND_MIXER_NRDEVICES; i++) { ALL_MIX_DEV.insert(std::pair<std::string, int>(sound_device_names[i], i)); } for (std::multimap<std::string, int>::iterator it = ALL_MIX_DEV.begin(); it != ALL_MIX_DEV.end(); ++it) { std::cout << " [" << (*it).first << ", " << (*it).second << "]" << std::endl; } .... std::pair<std::multimap<std::string, int>::iterator, std::multimap<std::string, int>::iterator> ppp; ppp = ALL_MIX_DEV.equal_range(v[1]); std::multimap<std::string, int>::iterator it2 = ppp.first; ioctl(mixer_fd, MIXER_READ((*it2).second), &level); std::cout << std::setw(7) << (level & 0xff) << (level & 0xff) << std::endl; .... >[оверквотинг удален] > //... > 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; > > Хотя может и перемудрил чего - давно на C++ не писал...
Не компилится че-то... : 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’ f.vector.cpp:15: ошибка: некорректный аргумент шаблона 2 f.vector.cpp:15: ошибка: invalid type in declaration before ‘;’ token f.vector.cpp:16: ошибка: запрос элемента ‘push_back’ в ‘v’, имеющего не классовый тип ‘int’ f.vector.cpp:17: ошибка: запрос элемента ‘push_back’ в ‘v’, имеющего не классовый тип ‘int’ f.vector.cpp:18: ошибка: запрос элемента ‘push_back’ в ‘v’, имеющего не классовый тип ‘int’ f.vector.cpp:21: ошибка: некорректные типы ‘int[int]’ для индекса массива f.vector.cpp:21: ошибка: некорректные типы ‘int[int]’ для индекса массива > boost::variant поможет. > http://www.boost.org/doc/html/variant.html Я в C++ еще новичок, и Boost для меня за сложно.... Но спасибо, когда созрею перепишу на нем :) Большое спасибо всем за помощь!
- Двухмерный вектор , siegerstein, 17:29 , 25-Окт-07 (11)
- Двухмерный вектор , jd, 06:32 , 26-Окт-07 (12)
- Двухмерный вектор , siegerstein, 15:38 , 26-Окт-07 (13)
>[оверквотинг удален] >А если уж использовать ассоциативный массив, то не multimap, а map, так >как в первом возможно существование двух элементов с одним ключём (ключ >у вас - это название канала), а это не ваш случай. >Но одна из основных идей использования map - это обращение (поиск) >к элементу по ключу. То есть для приведённого кода, что-то вроде >ALL_MIX_DEV["PCM"] (для получения или установки соответствующего значения для канала PCM, например). > > >А вообще, лучше всего почитать Страуструпа, чтобы делать осознанный выбор. STL там >довольно хорошо описан. Спасибо, да компилится... Я как раз тоже поменял с multimap на map... Теперь имею два варианта решения проблемы :) Спасибо за помощь, jd!
|