草庐IT

MEM_RESERVE

全部标签

c++ - tr1::mem_fn 和 tr1::bind:常量正确性和重载

以下代码片段有什么问题?#include#include#includeusingnamespacestd::tr1::placeholders;structabc{typedefvoidresult_type;voidhello(int){std::cout尝试用g++-4.3编译它,似乎cv-qualifier重载函数混淆了tr1::mem_fn和tr1::bind并出现以下错误:nomatchingfunctionforcallto‘bind(,...下面的代码片段编译但似乎破坏了const-correctness:structabc{typedefvoidresult_type

c++ - std::string::reserve() 和 std::string::clear() 难题

这道题从一段代码开始,只是因为我觉得这样更容易看出我在追求什么:/*static*/voidUrl::Split(std::list&url,conststd::string&stringUrl){std::stringcollector;collector.reserve(stringUrl.length());for(autoc:stringUrl){if(PathSeparator==c){url.push_back(collector);collector.clear();//Sabotagesmyoptimizationwithreserve()above!}else{col

c++ - mem_fun_ref 麻烦

我无法理解mem_fun_ref。我必须承认,我通常将仿函数用于此类事情,因为它们可以内联以提高速度和利润。但是,这段代码不会成为瓶颈,所以我想尝试一下。这是我想做的一个例子。我知道还有其他方法可以做到这一点。我不想使用copy,我不想使用范围成员函数,我不想使用back_inserter。我特别想使用mem_fun_ref。这只是一个简单的例子,实际情况要复杂得多。也就是说,我真的不知道为什么这是错误的,但我不熟悉mem_fun_ref或mem_fun。这是我想要的工作:#include#include#include#includeusingnamespacestd;intmain

c++ - 功能性、bind1st 和 mem_fun

为什么不能编译?#include#includeclassA{A(){typedefboost::functionFunctionCall;FunctionCallf=std::bind1st(std::mem_fun(&A::process),this);}voidprocess(){}};错误:Infileincludedfrom/opt/local/include/gcc44/c++/bits/stl_function.h:712,from/opt/local/include/gcc44/c++/functional:50,froma.cc:1:/opt/local/includ

c++ - string::capacity/reserve() 算作终止 null 吗?

从cppref对capacity()的描述来看并不明显和reserve()是否计算终止空字符。 最佳答案 标准statesthat:Inallcases,size().和size()不包括终止空值。因为有可能size()等于capacity(),在这种情况下,这意味着capacity()也不计算终止空值。请注意,在C++11及更高版本中,mystring.c_str()相当于mystring.data()相当于&mystring[0],和mystring[mystring.size()]保证是'\0'.检查这个Demo.

c++ - tr1::mem_fn 和具有默认参数的成员

我有一个带有默认参数的成员函数的类。structClass{voidmember(intn=0){}};通过std::tr1::mem_fn我可以调用它:Classobject;std::tr1::mem_fn(&Class::member)(object,10);就是说,如果我想用默认参数调用对象上的callable成员,正确的语法是什么?std::tr1::mem_fn(&Class::member)(object);//Thisdoesnotworkg++报错如下:test.cc:17:error:nomatchforcallto‘(std::tr1::_Mem_fn)(Clas

c++ - 在将大小较大的 vector move 到容量较小的 vector 之前,是否可以通过使用 reserve() 来提高代码性能?

如果这个问题不完整、不清楚或重复(这是我的第一个问题),请提前道歉。在研究move语义和为我的OOP类(class)做一个小项目时,我偶然发现了一个我自己无法回答的问题。据我所知std::move()通过将l值转换为r值来工作,但假设我们将一个包含很多元素的vectormove到容量为1的第二个vector中。我可以使用reserve()避免由于std::move()将r值move到第二个vector中,第二个vector的大量自动内存重新分配或者使用reserve()没有效果?可以在下面找到我的问题的简单实现。#include#include#includeintmain(){std

c# - 在 C# 中列出类似于 C++ 中的 vector.reserve(n) 的内容

在System.Collections.Generic.List中添加大量元素时它运行缓慢,因为当nums增加容量时,它必须复制所有元素。在C++中,这是通过vector.reserve(n)修复的.我如何在C#中做到这一点? 最佳答案 使用Capacity属性:list.Capacity=n;或者您可以通过constructor设置初始容量:varlist=newList(n); 关于c#-在C#中列出类似于C++中的vector.reserve(n)的内容,我们在StackOverf

c++ - Clang:将 bind 或 mem_fn 与 string::c_str 和 transform 结合使用时出现问题

尝试将std::stringvector转换为constchar*vector:#include#include#include#includeintmain(intargc,char**argv){std::vectorvalues;values.push_back("test1");values.push_back("test2");values.push_back("test3");std::vectorc_values(values.size());std::transform(values.begin(),values.end(),c_values.begin(),std::

c++ - 带有 ref_qualified 成员函数的 std::mem_fn

有什么方法可以通过std::mem_fn使用ref限定的成员函数?下面的代码编译失败:classDeadPool{public:voidjump()&{std::cout错误信息:mem_fn_ex.cc:18:15:error:nomatchingfunctionforcallto'mem_fn'autocobj=std::mem_fn(&DeadPool::jump);//Won'tcompile^~~~~~~~~~~/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/functional:1233:1:not