如何制作 class 个对象的双端队列?
How to make a deque of class objects?
我有一个 deque
结构(每个都包含一个 int
id 和一个 std::chrono::time_point<std::chrono::system_clock>
时间戳):在一定的超时后,已超时的结构从 deque
.
我想到了一种不同的方法:我可以将对象 class 放在 [=11] 中,而不是让一个线程遍历 deque
来检查其中每个结构的超时=]:当thisclass的构造函数被调用,对象将被压入deque
时,调用了thisclass的一个方法;当对象从睡眠中恢复时,此方法将使对象睡眠 std::this_thread::sleep_for(std::chrono::milliseconds(/*#define TIMETOUT*/));
,它会向等待“condition_variable”的线程发送信号。
我读了一篇关于 class 对象队列的 (这让我发现了包装器 classes),但我不明白一些事情:当我从deque
,返回了什么?参考?对象本身?我需要删除该对象,因为我必须将它插入另一个 deque
。
如果真的需要包装器,我该如何正确创建一个 class?
首先,任何类型的睡眠函数都不会帮助您:它会冻结整个线程,而不是对象。如果你不知道线程是什么以及如何使用它们,那么你的程序就是单线程的,当你调用睡眠函数时整个程序就会卡住。
然后,当您从双端队列中删除某些内容时,deque::erase()
returns 一个指向队列中下一个对象的迭代器。当您在循环中遍历队列并且想要删除某些内容时,这很有用。
如果你想在某处复制一个对象,你需要先做。删除后无法复制
最后,关于包装器 类:我不知道为什么你需要在这里使用它们。如果从第一个队列删除,您可以手动将对象添加到不同的队列。
我有一个 deque
结构(每个都包含一个 int
id 和一个 std::chrono::time_point<std::chrono::system_clock>
时间戳):在一定的超时后,已超时的结构从 deque
.
我想到了一种不同的方法:我可以将对象 class 放在 [=11] 中,而不是让一个线程遍历 deque
来检查其中每个结构的超时=]:当thisclass的构造函数被调用,对象将被压入deque
时,调用了thisclass的一个方法;当对象从睡眠中恢复时,此方法将使对象睡眠 std::this_thread::sleep_for(std::chrono::milliseconds(/*#define TIMETOUT*/));
,它会向等待“condition_variable”的线程发送信号。
我读了一篇关于 class 对象队列的 deque
,返回了什么?参考?对象本身?我需要删除该对象,因为我必须将它插入另一个 deque
。
如果真的需要包装器,我该如何正确创建一个 class?
首先,任何类型的睡眠函数都不会帮助您:它会冻结整个线程,而不是对象。如果你不知道线程是什么以及如何使用它们,那么你的程序就是单线程的,当你调用睡眠函数时整个程序就会卡住。
然后,当您从双端队列中删除某些内容时,deque::erase()
returns 一个指向队列中下一个对象的迭代器。当您在循环中遍历队列并且想要删除某些内容时,这很有用。
如果你想在某处复制一个对象,你需要先做。删除后无法复制
最后,关于包装器 类:我不知道为什么你需要在这里使用它们。如果从第一个队列删除,您可以手动将对象添加到不同的队列。