草庐IT

pop_back

全部标签

c++ vector.push_back 错误: request for member 'push_back' . ..,属于非类类型 'vector(char, allocator(char)) ()()'

我将Cygwin与GCC一起使用,最终我想将字rune件读入字符vector,并使用此代码#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vectorstring1();string1.push_back('a');return0;}生成此编译时错误:main.cpp:Infunctionintmain(int,char**)':main.cpp:46:error:requestformemberpush_back'instring1',whichisofnon-classtypestd::v

c++ vector.push_back 错误: request for member 'push_back' . ..,属于非类类型 'vector(char, allocator(char)) ()()'

我将Cygwin与GCC一起使用,最终我想将字rune件读入字符vector,并使用此代码#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){vectorstring1();string1.push_back('a');return0;}生成此编译时错误:main.cpp:Infunctionintmain(int,char**)':main.cpp:46:error:requestformemberpush_back'instring1',whichisofnon-classtypestd::v

c++ - 为什么 back_insert_iterator/front_insert_iterator/insert_iterator 的 value_type/difference_type/pointer/reference 都是 void?

在我的项目中,我想将流拆分为一些给定类型的值,所以我实现了一个模板函数templateTOutputIterSplitSpace(std::istream&IS,TOutputIterresult){TElemelem;while(IS>>elem){*result=elem;++result;}returnresult;}我认为这很尴尬,因为我必须在调用时明确给出TElem的类型。例如,我必须写:std::vectorv;SplitSpace(std::cin,back_inserter(v));//IwanttoittobeSplitSpace(std::cin,back_inse

c++ - 为什么 back_insert_iterator/front_insert_iterator/insert_iterator 的 value_type/difference_type/pointer/reference 都是 void?

在我的项目中,我想将流拆分为一些给定类型的值,所以我实现了一个模板函数templateTOutputIterSplitSpace(std::istream&IS,TOutputIterresult){TElemelem;while(IS>>elem){*result=elem;++result;}returnresult;}我认为这很尴尬,因为我必须在调用时明确给出TElem的类型。例如,我必须写:std::vectorv;SplitSpace(std::cin,back_inserter(v));//IwanttoittobeSplitSpace(std::cin,back_inse

c++ - 将 pop_front 实现为 std::vector 的快速方法

我正在使用一些使用std::vector的类和实用方法。现在我需要在其中一个类上使用每个帧的pop_front-push_back方法(但它们都是链接的,并且可以一起工作,所以我不能只更改一个)。大部分操作都是遍历所有元素和push_back操作,所以我应该做的最好的工作是:fork这些类和实用程序的存储库,模板化所有内容,并使用deque或list。但这意味着大量的代码重写和大量的测试会让我错过最后期限。所以我需要建议将有效的pop_front写入静态大小的vector(大小不会改变)。我找到了here一种方式:templatevoidpop_front(std::vector&ve

c++ - 将 pop_front 实现为 std::vector 的快速方法

我正在使用一些使用std::vector的类和实用方法。现在我需要在其中一个类上使用每个帧的pop_front-push_back方法(但它们都是链接的,并且可以一起工作,所以我不能只更改一个)。大部分操作都是遍历所有元素和push_back操作,所以我应该做的最好的工作是:fork这些类和实用程序的存储库,模板化所有内容,并使用deque或list。但这意味着大量的代码重写和大量的测试会让我错过最后期限。所以我需要建议将有效的pop_front写入静态大小的vector(大小不会改变)。我找到了here一种方式:templatevoidpop_front(std::vector&ve

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++ 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++的一个指导原则是您无需为你不需要什么。单个函数别