草庐IT

pop_front

全部标签

C++ STL 堆栈问题 : Why does pop() not throw an exception if the stack is empty?

如果堆栈为空且没有可弹出的内容,为什么std::stack::pop()不抛出异常?(我正在为我自己的代码设计一个专门的堆栈,并且想知道这种方法(需要手动检查堆栈是否为空)与抛出异常之间的权衡。我的猜测是,尽管C++支持异常处理,但它的运行时开销很小,因此,为了获得最佳性能,决定不在std::stack::pop中抛出异常)。 最佳答案 我认为pop()不必抛出异常的原因与效率或性能无关,而是与异常有关。正如所争论的elsewhere:SGIexplanation:http://www.sgi.com/tech/stl/stack.

c++ - 将 std::stack .pop() 方法的结果存储到变量中

我想做以下事情:std::stacks;inth=0;s.push(2);h=s.pop();例如让h保持值2。当我尝试我的方法时,我得到“voidvaluenotignoredasithouldbe”。这不是.pop()方法的意图吗?执行此操作的首选方法是什么? 最佳答案 标准库容器将top()和pop()分开:top()返回对顶部元素的引用,而pop()移除顶部元素。(对于back()/pop_back()等类似)。这种分离是有充分理由的,而不是让pop删除顶部元素并返回它:C++的一个指导原则是您无需为你不需要什么。单个函数别

c++ - 将 std::stack .pop() 方法的结果存储到变量中

我想做以下事情:std::stacks;inth=0;s.push(2);h=s.pop();例如让h保持值2。当我尝试我的方法时,我得到“voidvaluenotignoredasithouldbe”。这不是.pop()方法的意图吗?执行此操作的首选方法是什么? 最佳答案 标准库容器将top()和pop()分开:top()返回对顶部元素的引用,而pop()移除顶部元素。(对于back()/pop_back()等类似)。这种分离是有充分理由的,而不是让pop删除顶部元素并返回它:C++的一个指导原则是您无需为你不需要什么。单个函数别

c++ - std::vector::front() 用于什么?

对不起,如果以前有人问过这个问题,但我想知道std::vector::front()的用途是什么。是否有理由使用例如myvector.front()而不是myvector[0]或myvector.at(0)? 最佳答案 一些也适用于列表的通用算法使用它。这是一个一般原则的示例:如果您为您支持的所有语义提供访问器,而不仅仅是您支持的实现,那么通用编写会更容易因此更容易重用代码。 关于c++-std::vector::front()用于什么?,我们在StackOverflow上找到一个类似的

c++ - std::vector::front() 用于什么?

对不起,如果以前有人问过这个问题,但我想知道std::vector::front()的用途是什么。是否有理由使用例如myvector.front()而不是myvector[0]或myvector.at(0)? 最佳答案 一些也适用于列表的通用算法使用它。这是一个一般原则的示例:如果您为您支持的所有语义提供访问器,而不仅仅是您支持的实现,那么通用编写会更容易因此更容易重用代码。 关于c++-std::vector::front()用于什么?,我们在StackOverflow上找到一个类似的

PHP之序列化与反序列化(POP链篇)

在了解了什么是简单的序列化与反序列化的简单利用,那么就讲讲进阶版的pop链。pop又称之为面向属性编程(Property-OrientedPrograming),常用于上层语言构造特定调用链的方法,与二进制利用中的面向返回编程(Return-OrientedPrograming)的原理相似,都是从现有运行环境中寻找一系列的代码或者指令调用,然后根据需求构成一组连续的调用链,最终达到攻击者邪恶的目的;说的再具体一点就是ROP是通过栈溢出实现控制指令的执行流程,而我们的反序列化是通过控制对象的属性从而实现控制程序的执行流程,进而达成利用本身无害的代码进行有害操作的目的。构造思想既然是连续调用链就会

c++ - queue::pop 现在可以返回值吗?

我知道std::queue::pop()返回void。有两个原因:异常安全:删除元素后可能会抛出一些东西能够returnthevaluebyreference很好。现在,如果我正确理解新的C++11移动语义,则第二个不再是有效参数。所以...唯一阻止std::queue有一个类似pop的函数返回值的原因在于移动构造函数抛出的可能性?我很难想到这样的移动构造函数会抛出什么情况。谁知道一个例子?我猜std::stack::pop(),std::vector::pop_front(),std::vector也是一样::pop_back(),std::deque::pop_front(),st

c++ - queue::pop 现在可以返回值吗?

我知道std::queue::pop()返回void。有两个原因:异常安全:删除元素后可能会抛出一些东西能够returnthevaluebyreference很好。现在,如果我正确理解新的C++11移动语义,则第二个不再是有效参数。所以...唯一阻止std::queue有一个类似pop的函数返回值的原因在于移动构造函数抛出的可能性?我很难想到这样的移动构造函数会抛出什么情况。谁知道一个例子?我猜std::stack::pop(),std::vector::pop_front(),std::vector也是一样::pop_back(),std::deque::pop_front(),st

c++ - 为什么 std::array::front 和 std::array::back 不是 noexcept?

我不熟悉noexcept说明符的使用,我不明白为什么std::array::front和std::array::back未声明noexcept(而std::array::begin和std::array::end是).这是什么原因? 最佳答案 来自cppreferenceThereisaspecialcaseforazero-lengtharray(N==0).Inthatcase,array.begin()==array.end(),whichissomeuniquevalue.Theeffectofcallingfront()o

c++ - 为什么 std::array::front 和 std::array::back 不是 noexcept?

我不熟悉noexcept说明符的使用,我不明白为什么std::array::front和std::array::back未声明noexcept(而std::array::begin和std::array::end是).这是什么原因? 最佳答案 来自cppreferenceThereisaspecialcaseforazero-lengtharray(N==0).Inthatcase,array.begin()==array.end(),whichissomeuniquevalue.Theeffectofcallingfront()o