Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с частью описания шаблона..пожалуйста 
:(
    Опции темы
annali
Дата 1.6.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.6.2007

Репутация: нет
Всего: нет



условие: Массив переменного размера на основе связного списка непрерывных фрагментов (доступ по индексу,включение,исключение элементов) 

где можно про это посмотреть вообще хоть что-ть? 
может кто-ть подскажет с описанием шаблона и с как-ть одной функцией.. 
спасибо..
PM MAIL   Вверх
SenkraD
Дата 1.6.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



annali,  посмотри классы vector, array из STL, если нужен ассоциативный массив то посмотите класс map.

Или вам с нуля нужно писать?

Это сообщение отредактировал(а) SenkraD - 1.6.2007, 12:21


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
zkv
Дата 1.6.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 92



Цитата(SenkraD @  1.6.2007,  12:20 Найти цитируемый пост)
annali,  посмотри классы vector, array из STL, если нужен ассоциативный массив то посмотите класс map.

если 
Цитата(annali @  1.6.2007,  12:16 Найти цитируемый пост)
на основе связного списка

то скорее std::list
PM MAIL   Вверх
annali
Дата 3.6.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;
}


что-то в этом духе??
PM MAIL   Вверх
Klin
Дата 3.6.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



annali, вам нужно обратиться в раздел общих вопросов. 


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0940 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.