gpt4 book ai didi

c++ - 这种使用 ","运算符是否被认为是错误的形式?

转载 作者:IT老高 更新时间:2023-10-28 12:46:22 25 4
gpt4 key购买 nike

我已经创建了一个列表类,作为在我的程序中替换可变参数函数的一种方法,该函数用于初始化需要包含不断变化的元素列表的对象。 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 容器要好得多,甚至比可变参数函数更好(和类型安全)。但是,由于我没有看到使用这种语法,我很好奇是否应该避免它,因为首先代码应该很容易被其他程序员理解?

编辑:

结合这个问题,我发布了这个 question更有针对性地解决实际问题。

最佳答案

为什么不重载 <<像 QList 那样的操作符?然后像这样使用它:

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

关于c++ - 这种使用 ","运算符是否被认为是错误的形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com