当前位置:  开发笔记 > 编程语言 > 正文

在C++中进行向量推回操作的类型转换

如何解决《在C++中进行向量推回操作的类型转换》经验,为你挑选了1个好方法。

我有两个向量

std::vector outputStack, operatorStack;

在某些时候,我需要从一个堆栈中弹出一些元素并将其推入另一个堆栈.

while(operatorStack.back().compare(L_BRACKET)) {
    outputStack.push_back(operatorStack.pop_back());
}

但是,eclipse会抛出一个错误,无效的参数.但是当我输入输入时工作正常.

outputStack.push_back((std::string)operatorStack.pop_back());

现在,为什么需要这种类型转换?我正在阅读(主要是在C++ Primer中),根据C++ 11,需要避免类型转换.



1> juanchopanza..:

std::vector::pop_back()回报void.你需要得到第back()一个,然后弹出它.

outputStack.push_back(operatorStack.back());
operatorStack.pop_back();

pop出于例外安全原因,这在标准库容器功能中非常常见.返回pop的value_type通常意味着可以抛出的复制结构,这意味着容器将丢失一个未被调用者成功复制的元素.所以pop()和/ back()front()操作是分开的.


+1用于解释为什么`pop()`和`back()`是分开的.
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有