, это может быстро запутаться.

лал список класса как средство замены переменных функций в моей программе, используемых для инициализации объектов, которые должны содержать изменяющийся список элементов. Класс списка имеет синтаксис использования, который мне действительно нравится. Однако я не видел, чтобы он использовался раньше, поэтому мне было интересно, не стоит ли использовать его только из-за этого факта? Базовая реализация класса list выглядит следующим образом ...

#include <list>
#include <iostream>
template<typename T>
struct list
{
    std::list<T> items;
    list(const list&ref):items(ref.items){}
    list(){}
    list(T var){items.push_back(var);}
    list& operator,(list add_){
        items.insert(items.end(),add_.items.begin(), add_.items.end());
        return *this;
    }
    list& operator=(list add_){
        items.clear();
        items.insert(items.end(),add_.items.begin(), add_.items.end());
        return *this;
    }
    list& operator+=(list add_){
        items.insert(items.end(),add_.items.begin(), add_.items.end());
        return *this;
    }
};

Это позволяет мне использовать это в коде так ...

struct music{
//...
};
struct music_playlist{
    list<music> queue;
//...
};
int main (int argc, const char * argv[])
{
    music_playlist playlist;
    music song1;
    music song2;
    music song3;
    music song4;
    playlist.queue = song1,song2; // The queue now contains song1 and song2
    playlist.queue+= song1,song3,song4; //The queue now contains two song1s and song2-4
    playlist.queue = song2; //the queue now only contains song2
    return 0;
}

Я действительно думаю, что синтаксис намного лучше, чем был бы, если бы я только что показал обычный контейнер stl, и даже лучше (и безопаснее), чем функции с переменными числами. Однако, поскольку я не видел, чтобы этот синтаксис использовался, мне любопытно, стоит ли мне его избегать, потому что, прежде всего, код должен быть легко понят другими программистами?

РЕДАКТИРОВАТЬ:

Совместно с этим вопросом я разместилвопрос больше нацелены на решение актуальной проблемы.

Ответы на вопрос(8)

Ваш ответ на вопрос