Библиотека C++ с подобным Java [закрытым] API

public class QueueUsingStacks<T>
{
    private LinkedListStack<T> stack1;
    private LinkedListStack<T> stack2;

    public QueueUsingStacks()
    {
        stack1=new LinkedListStack<T>();
        stack2 = new LinkedListStack<T>();

    }
    public void Copy(LinkedListStack<T> source,LinkedListStack<T> dest )
    {
        while(source.Head!=null)
        {
            dest.Push(source.Head.Data);
            source.Head = source.Head.Next;
        }
    }
    public void Enqueue(T entry)
    {

       stack1.Push(entry);
    }
    public T Dequeue()
    {
        T obj;
        if (stack2 != null)
        {
            Copy(stack1, stack2);
             obj = stack2.Pop();
            Copy(stack2, stack1);
        }
        else
        {
            throw new Exception("Stack is empty");
        }
        return obj;
    }

    public void Display()
    {
        stack1.Display();
    }


}

Для каждой операции добавления в очередь мы добавляем в начало стека1. Для каждой очереди мы опускаем содержимое стека 1 в стек 2 и удаляем элемент в верхней части стека. Сложность времени O (n) для очереди, так как мы должны скопировать stack1 в stack2. Временная сложность enqueue такая же, как и у обычного стека

5
задан Rafael Sierra 30 June 2009 в 07:19
поделиться

4 ответа

Qt IMHO очень похож на java. Т.е. они предпочитают Итераторы в стиле Java , а не STL. Qt включает сети ( примеры ) и многое другое (например, создание сценариев через javascript)

5
ответ дан 13 December 2019 в 05:41
поделиться

Вы смотрели библиотеки Boost ?

  • Boost. IOStreams предоставляет основу для определения потоков, буферов потоков и фильтров ввода-вывода .
  • Asio - Портативные сети, включая сокеты, таймеры, разрешение имени хоста и iostreams сокетов.
  • Многие другие ....

Библиотеки Boost предоставляют аналогичные возможности по сравнению с API Java, но они очень «выглядят и ощущаются» - соответственно - как библиотеки C ++.

5
ответ дан 13 December 2019 в 05:41
поделиться

Библиотека C ++, которая выглядела бы как Java, была бы плохой библиотекой, ИМХО. Эти два языка настолько различны, что то, что является хорошим дизайном для одного, почти неизбежно будет плохим дизайном для другого.

0
ответ дан 13 December 2019 в 05:41
поделиться

Существует также возможность использовать что-то вроде POCO , что немного проще, чем использование чего-то вроде Boost, но при этом кросс-платформенный.

Хотя я использовал HTTP в Java только очень давно, интерфейс библиотеки POCO выглядит довольно простым в использовании. Он дает пример базового использования FTP примерно так:

Poco::Net::FTPStreamFactory::registerFactory();
std::ofstream localFile(inputFile, std::ios_base::out | std::ios_base::binary);
Poco::URI uri(inputURL);
std::auto_ptr<std::istream> ptrFtpStream(Poco::Net::URIStreamOpener::defaultOpener().open(uri));
Poco::StreamCopier::copyStream(*ptrFtpStream.get(), localFile);
2
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: