草庐IT

long_ptr

全部标签

c++ - shared_ptr 在哪里?

在试图找到shared_ptr的位置几个小时后,我现在非常沮丧。我看到的示例都没有显示包含shared_ptr标题的完整代码(和工作)。简单地说std,tr1和一点帮助都没有!我已经下载了boost,但仍然没有出现!有人可以告诉我在哪里可以找到它吗?感谢你让我发泄我的不满!编辑:我看到我的标题已更改。对于那个很抱歉。所以...这也是因为我不清楚shared_ptr是否“依赖于C++版本”-->这就是我没有说明我的环境的原因-->因此可能是我很难找到它的原因。我正在研究MSVS2008。编辑2:我不知道为什么,但我在到处寻找shared_ptr时包含了[memory]​​和[boost/

C++ - 传递对 std::shared_ptr 或 boost::shared_ptr 的引用

如果我有一个需要使用shared_ptr的函数,传递一个对它的引用不是更有效吗(以避免复制shared_ptr对象)?可能的不良副作用是什么?我设想了两种可能的情况:1)在函数内部,一个参数的拷贝,就像在ClassA::take_copy_of_sp(boost::shared_ptr&sp){...m_sp_member=sp;//Thiswillcopytheobject,incrementingrefcount...}2)在函数内部只使用参数,就像在Class::only_work_with_sp(boost::shared_ptr&sp)//Again,nocopyhere{.

c++ - 如何使用带有 std::unique_ptr 成员的自定义删除器?

我有一个包含unique_ptr成员的类。classFoo{private:std::unique_ptrbar;...};Bar是具有create()函数和destroy()函数的第三方类。如果我想在一个独立的函数中使用std::unique_ptr,我可以这样做:voidfoo(){std::unique_ptrbar(create(),[](Bar*b){destroy(b);});...}有没有办法将std::unique_ptr作为类的成员? 最佳答案 假设create和destroy是具有以下签名的自由函数(这似乎是OP

php - Laravel 迁移 : unique key is too long, 即使指定

我正在尝试在Laravel中迁移用户表。当我运行迁移时,出现此错误:[Illuminate\Database\QueryException]SQLSTATE[42000]:Syntaxerrororaccessviolation:1071Specifiedkeywastoolong;maxkeylengthis767bytes(SQL:altertableusersadduniqueusers_email_uniq(email))我的迁移如下:Schema::create('users',function(Blueprint$table){$table->increments('id'

php - 最佳实践 : working with long, PHP 中的多行字符串?

注意:如果这是一个非常简单的问题,我很抱歉,但我对我的代码格式有点强制症。我有一个类,它有一个函数,它返回一个字符串,该字符串将构成电子邮件的正文。我希望此文本格式化,使其在电子邮件中看起来正确,但也不会使我的代码看起来很时髦。这就是我的意思:classSomething{publicfunctiongetEmailText($vars){$text='Hello'.$vars->name.",Thesecondlinestartstwolinesbelow.Ialsodon'twantanyspacesbeforethenewline,soit'sbuttedupagainstthe

c++ - 为什么 std::shared_ptr<void> 工作

我发现一些代码使用std::shared_ptr在关机时执行任意清理。起初我认为这段代码不可能工作,但后来我尝试了以下方法:#include#include#includeclasstest{public:test(){std::cout>">v;{std::cout(newtest()));std::cout这个程序给出了输出:Atbeginofmain.creatingstd::vector>CreatingtestTestcreatedLeavingscopeLeavingmainTestdestroyed我对为什么这可能有效有一些想法,这与为G++实现的std::shared_

C++ unique_ptr 和映射

我正在尝试使用C++0xunique_ptrclass在map内像这样://compilewith`g++main.cpp-std=gnu++0x`#include#include#includeusingnamespacestd;structFoo{char*str;Foo(charconst*str_):str(strdup(str_)){}};intmain(void){typedefstd::map>Bar;Barbar;autoa=bar.insert(Bar::value_type(1,newFoo("one")));return0;}但是GCC给了我以下错误(缩短,我认为

C++ unique_ptr 和映射

我正在尝试使用C++0xunique_ptrclass在map内像这样://compilewith`g++main.cpp-std=gnu++0x`#include#include#includeusingnamespacestd;structFoo{char*str;Foo(charconst*str_):str(strdup(str_)){}};intmain(void){typedefstd::map>Bar;Barbar;autoa=bar.insert(Bar::value_type(1,newFoo("one")));return0;}但是GCC给了我以下错误(缩短,我认为

C++ : why bool is 8 bits long?

在C++中,我想知道为什么bool类型是8位长(在我的系统上),而只有一位就足以容纳boolean值?我以前认为这是出于性能原因,但是在32位或64位机器上,寄存器为32或64位宽,性能优势是什么?或者这只是这些“历史”原因之一? 最佳答案 因为每个C++数据类型都必须是可寻址的。如何创建指向单个位的指针?你不能。但是您可以创建一个指向字节的指针。所以C++中的boolean值通常是字节大小的。(它也可能更大。这取决于实现。主要是它必须是可寻址的,因此任何C++数据类型都不能小于一个字节)

c++ - 为什么我要 std::move 一个 std::shared_ptr?

我一直在看Clangsourcecode我发现了这个片段:voidCompilerInstance::setInvocation(std::shared_ptrValue){Invocation=std::move(Value);}我为什么要std::move一个std::shared_ptr?转让共享资源的所有权有什么意义吗?我为什么不这样做呢?voidCompilerInstance::setInvocation(std::shared_ptrValue){Invocation=Value;} 最佳答案 我认为其他答案没有足够强