![]() |
|
![]() ![]() ![]() |
|
annali |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 1.6.2007 Репутация: нет Всего: нет |
условие: Массив переменного размера на основе связного списка непрерывных фрагментов (доступ по индексу,включение,исключение элементов)
где можно про это посмотреть вообще хоть что-ть? может кто-ть подскажет с описанием шаблона и с как-ть одной функцией.. спасибо.. |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
annali, посмотри классы vector, array из STL, если нужен ассоциативный массив то посмотите класс map.
Или вам с нуля нужно писать? Это сообщение отредактировал(а) SenkraD - 1.6.2007, 12:21 |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 1 Всего: 92 |
||||
|
||||
annali |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 1.6.2007 Репутация: нет Всего: нет |
Весь код условен, потому как C++ я помню плохо
Нужно сделать список с массивами в качестве элементов списка. Можно сделать на основе STL: std::list<std::vector<T> > _list; это список векторов (массивов), остаётся только добавить функцию доступа по индексу, как для массива, т.е. чтоб можно было писать так _list[3] Как это сделать в качестве оператора [] я не помню, но сама функция выглядит так Тестовый кодик: #include <iostream> #include <vector> #include <list> #include <algorithm> // Типа спиок, на самом деле всё неправильно // по идее надо бы отнаследоваться // от std::list<std::vector<T> > // или, сделать функции добавления векторов template<class T> class blist { public: std::list<std::vector<T> > _list; public: size_t size() { size_t size = 0; std::list<std::vector<T> >::iterator itr; for(itr = _list.begin();itr!=_list.end();itr++) size+=(*itr).size(); return size; } T get_element(int index) { std::list<std::vector<T> >::iterator itr = _list.begin(); while(index >= (long)(*itr).size()) { index-=(int)(*itr).size(); itr++; if(itr==_list.end()) throw new std::exception("Out of range"); } return (*itr)[index]; } }; int _tmain(int argc, _TCHAR* argv[]) { std::cout<<"Hellow, World !!"<<std::endl; blist<int> tl; std::cout<<"Size = "<<tl.size()<<std::endl; // Печать содержимого /*for(int ci=0;ci<tl._list.size();ci++) { std::fore for(int cj=0;cj<tl._list }*/ // Заполняю массив для теста std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); tl._list.push_back(v); std::vector<int> v2; v2.push_back(100); v2.push_back(200); v2.push_back(300); v2.push_back(400); v2.push_back(500); tl._list.push_back(v2); std::cout<<tl.get_element(1)<<std::endl; std::cout<<tl.get_element(2)<<std::endl; std::cout<<tl.get_element(5)<<std::endl; std::cout<<tl.get_element(8)<<std::endl; return 0; } что-то в этом духе?? |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
annali, вам нужно обратиться в раздел общих вопросов.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |