use*_*748 1 c++ types casting vector push-back
我有两个向量
std::vector<std::string> outputStack, operatorStack;
Run Code Online (Sandbox Code Playgroud)
在某些时候,我需要从一个堆栈中弹出一些元素并将其推入另一个堆栈.
while(operatorStack.back().compare(L_BRACKET)) {
outputStack.push_back(operatorStack.pop_back());
}
Run Code Online (Sandbox Code Playgroud)
但是,eclipse会抛出一个错误,无效的参数.但是当我输入输入时工作正常.
outputStack.push_back((std::string)operatorStack.pop_back());
Run Code Online (Sandbox Code Playgroud)
现在,为什么需要这种类型转换?我正在阅读(主要是在C++ Primer中),根据C++ 11,需要避免类型转换.
std::vector::pop_back()回报void.你需要得到第back()一个,然后弹出它.
outputStack.push_back(operatorStack.back());
operatorStack.pop_back();
Run Code Online (Sandbox Code Playgroud)
pop出于例外安全原因,这在标准库容器功能中非常常见.返回pop的value_type通常意味着可以抛出的复制结构,这意味着容器将丢失一个未被调用者成功复制的元素.所以pop()和/ back()或front()操作是分开的.
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |