双端队列,将前面的元素推到后面的c++
deque, pushing the front element to the back c++
我现在正在练习使用数据结构。我有一个问题,如果我想交换双端队列中的第一个和最后一个元素,我可以写 deque.push_back(pop_front())
吗?
不,对不起,你不能。
pop_back()
没有结果(void
)所以不能作为参数
push_back()
.
( https://en.cppreference.com/w/cpp/container/deque/pop_back )
最好调用 back()
并将结果存储在
一个变量;然后调用 pop_back()
.
对第二个变量重复相同的过程,然后调用
push_back()
两次,第一个和第二个变量。
啊?!?!问题刚刚改变。
问题与 pop_front()
相同,结果为 void
。
要交换您可以使用的第一个和最后一个元素
std::swap(deque.front(), deque.back())
.
如果您绝对想要使用push/pop
函数,那么:
- 使用
back()
并记住第一个变量的值,
- 使用
pop_back()
,
- 使用
front()
并记住第二个变量的值,
- 使用
pop_front()
,
- 对第一个变量使用
push_front()
,
- 对第二个变量使用
push_back()
,
但是这个解决方案比std::swap()
复杂得多。
当然,对于所有这些,你必须确保有足够的
双端队列中的元素:至少一个用于 std::swap()
解决方案,
push/pop
解决方案至少有两个。
我现在正在练习使用数据结构。我有一个问题,如果我想交换双端队列中的第一个和最后一个元素,我可以写 deque.push_back(pop_front())
吗?
不,对不起,你不能。
pop_back()
没有结果(void
)所以不能作为参数
push_back()
.
( https://en.cppreference.com/w/cpp/container/deque/pop_back )
最好调用 back()
并将结果存储在
一个变量;然后调用 pop_back()
.
对第二个变量重复相同的过程,然后调用
push_back()
两次,第一个和第二个变量。
啊?!?!问题刚刚改变。
问题与 pop_front()
相同,结果为 void
。
要交换您可以使用的第一个和最后一个元素
std::swap(deque.front(), deque.back())
.
如果您绝对想要使用push/pop
函数,那么:
- 使用
back()
并记住第一个变量的值, - 使用
pop_back()
, - 使用
front()
并记住第二个变量的值, - 使用
pop_front()
, - 对第一个变量使用
push_front()
, - 对第二个变量使用
push_back()
,
但是这个解决方案比std::swap()
复杂得多。
当然,对于所有这些,你必须确保有足够的
双端队列中的元素:至少一个用于 std::swap()
解决方案,
push/pop
解决方案至少有两个。