草庐IT

new_size

全部标签

c++ - "std::size_t"在 C++ 中有意义吗?

在我继承的一些代码中,我看到经常将size_t与std命名空间限定符一起使用。例如:std::size_tn=sizeof(long);当然,它编译并运行良好。但对我来说,这似乎是一种不好的做法(可能是从C语言继承而来的?)。size_t是不是内置在C++中并因此位于全局命名空间中?在C++中使用size_t是否需要包含头文件?问这个问题的另一种方法是,以下程序(包含no)是否应该在所有C++编译器上编译?size_tfoo(){returnsizeof(long);} 最佳答案 stackoverflow人群似乎对此感到困惑::s

c++ - `sizeof` *真的*评估为 `std::size_t` 吗?它可以?

阅读以下标准段落:[C++11:5.3.3/6]:Theresultofsizeofandsizeof...isaconstantoftypestd::size_t.[Note:std::size_tisdefinedinthestandardheader(18.2).—endnote]现在:[C++11:18.2/6]:Thetypesize_tisanimplementation-definedunsignedintegertypethatislargeenoughtocontainthesizeinbytesofanyobject.当然,这篇文章不需要size_t是用typede

c++ - 在 C++ 中使用 std::allocator 而不是 new 有什么好处?

我刚刚阅读了std::allocator。在我看来,使用它而不是使用new和delete更复杂。使用allocator,我们必须显式分配堆内存,构造它,销毁它,最后释放内存。那么它为什么被创造出来呢?在什么情况下可以使用,什么时候可以代替new和delete使用? 最佳答案 Inmyopinion,itismorecomplicatedtouseitinsteadofusingnewanddelete.是的,但它并不是要替换new和delete,它的用途不同。Withallocatorwemustexplicitlyallocate

c++ - list::size() 真的是 O(n) 吗?

最近,我注意到有人提到std::list::size()具有线性复杂度。根据somesources,这实际上取决于实现,因为标准没有说明复杂性必须是什么。评论inthisblogentry说:Actually,itdependsonwhichSTLyouareusing.MicrosoftVisualStudioV6implementssize()as{return(_Size);}whereasgcc(atleastinversions3.3.2and4.1.0)doitas{returnstd::distance(begin(),end());}Thefirsthasconstan

javascript - 为什么 arr = [] 比 arr = new Array 快?

我运行了这段代码,得到了以下结果。我很想知道为什么[]更快?console.time('using[]')for(vari=0;i使用[]:299毫秒使用new:363ms感谢Raynos这是一个benchmark这段代码和一些更可能的方式来定义一个变量。 最佳答案 进一步扩展之前的答案...从一般编译器的Angular来看,忽略特定于VM的优化:首先,我们通过词法分析阶段对代码进行标记。例如,可以产生以下标记:[]:ARRAY_INIT[1]:ARRAY_INIT(NUMBER)[1,foo]:ARRAY_INIT(NUMBER,

JavaScript "new Array(n)"和 "Array.prototype.map"怪异

我在Firefox-3.5.7/Firebug-1.5.3和Firefox-3.6.16/Firebug-1.6.2中观察到了这一点当我启动Firebug时:varx=newArray(3)console.log(x)//[undefined,undefined,undefined]vary=[undefined,undefined,undefined]console.log(y)//[undefined,undefined,undefined]console.log(x.constructor==y.constructor)//trueconsole.log(x.map(functi

javascript - `new Object()` 和对象字面量表示法有什么区别?

这种基于构造函数的创建对象的语法有什么区别:person=newObject()...和这个字面语法:person={property1:"Hello"};看起来两者都做同样的事情,尽管JSLint更喜欢你使用对象文字表示法。哪个更好,为什么? 最佳答案 在您的示例中,没有方法的简单对象没有区别。但是,当您开始向对象添加方法时,会有很大的不同。字面意思:functionObj(prop){return{p:prop,sayHello:function(){alert(this.p);},};}原型(prototype)方式:func

go - Go 中的 new(Struct) 和 &Struct{} 有什么区别?

它们似乎是一样的:packagemainimport"fmt"typeSstruct{iint}funcmain(){vars1*S=new(S)fmt.Println(s1)vars2*S=&S{}fmt.Println(s2)//Printsthesamething.}更新:嗯。我刚刚意识到没有明显的方法可以使用new初始化S.i。有没有办法做到这一点?new(S{i:1})似乎不起作用:/ 最佳答案 来自EffectiveGo:Asalimitingcase,ifacompositeliteralcontainsnofield

pointers - 在 Go 中使用 new vs var

你有一个带有参数的函数,一个指向类型的指针。typebarstruct{...}funcfoo(arg*bar)两者有什么区别:varbbarfoo(&b)和b:=new(bar)foo(b)使用new创建分配。 最佳答案 不,没有区别,因为与C相反,Go明确声明您可以提供指向本地创建的变量的指针。来自thedocumentation:Notethat,unlikeinC,it'sperfectlyOKtoreturntheaddressofalocalvariable;thestorageassociatedwiththevari

google-app-engine - GAE Go - "This request caused a new process to be started for your application..."

我现在第二次遇到这个问题,我想知道是否有任何解决方案。我正在GoogleAppEngine上运行一个应用程序,该应用程序依赖于通过HTTPJSONRPC与网站频繁通信。.GAE似乎倾向于在日志中随机显示这样的消息:"Thisrequestcausedanewprocesstobestartedforyourapplication,andthuscausedyourapplicationcodetobeloadedforthefirsttime.ThisrequestmaythustakelongerandusemoreCPUthanatypicalrequestforyourappli