【发布时间】:2019-06-16 00:59:04
【问题描述】:
有没有一种简单的方法可以通过 C++ 中的值来获取 std::queue 中元素的位置?
例如:
std::queue<int> numbers;
numbers.push(7);
numners.push(4);
numbers.push(11);
int position = numbers.getPosition(4); //should be 1
【问题讨论】:
-
XY problem 的气味非常强烈。如果您确实需要从
std::queue的值中获取元素的索引(或迭代器),那么您的代码设计有缺陷:如果需要,请不要使用std::queue。 (此外,可能没有唯一索引,具体取决于值:如果它们都相同怎么办?) -
请注意,STL 容器并非设计为公开派生自,因为它们没有虚拟析构函数。我在这里不这样做,但只要了解风险,仍然有人可以公开从
std::queue获取信息。