草庐IT

UINT_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

c++ - UInt8 和 uint8_t 有什么区别

UInt8和uint8_t或UInt16和uint16_t有什么区别?_t意味着什么? 最佳答案 在C99中,可用的基本整数类型(没有_t的那些)被认为是不够的,因为它们的实际大小可能因不同系统而异。因此,C99标准包括了几种新整数类型的定义,以增强程序的可移植性。新类型在嵌入式环境中特别有用。所有新类型都以_t为后缀,并保证在所有系统中统一定义。更多信息见fixed-widthintegertypessectionofthewikipediaarticleonStdint. 关于c++

c++ - 快速复制 `std::vector<std::uint8_t>`

我有一个std::vector,需要复制。这只需调用复制构造函数即可完成。我的分析结果显示,MicrosoftVisualC++(msvc100)实现使用std::uninitialized_copy内部。这将一个接一个地复制每个元素。在这种情况下,可以通过一次复制整个内存块来完成更优化的复制(例如memcpy可能会这样做)。换句话说,这可能是一个重要的优化。有没有办法强制vector使用这种优化的方法?注意:我尝试过使用std::basic_string,它的性能确实更好,但它还有其他问题。 最佳答案 此答案并非特定于msvc10

c++ - 快速复制 `std::vector<std::uint8_t>`

我有一个std::vector,需要复制。这只需调用复制构造函数即可完成。我的分析结果显示,MicrosoftVisualC++(msvc100)实现使用std::uninitialized_copy内部。这将一个接一个地复制每个元素。在这种情况下,可以通过一次复制整个内存块来完成更优化的复制(例如memcpy可能会这样做)。换句话说,这可能是一个重要的优化。有没有办法强制vector使用这种优化的方法?注意:我尝试过使用std::basic_string,它的性能确实更好,但它还有其他问题。 最佳答案 此答案并非特定于msvc10

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++ - uint8_t 不能用 cout 打印

我有一个关于在C++中处理整数的奇怪问题。我编写了一个简单的程序,它为变量设置一个值,然后打印它,但它没有按预期工作。我的程序只有两行代码:uint8_taa=5;cout这个程序的输出是valueis即,它为aa打印空白。当我将uint8_t更改为uint16_t时,上面的代码就像一个魅力。我使用Ubuntu12.04(PrecisePangolin),64位,我的编译器版本是:gccversion4.6.3(Ubuntu/Linaro4.6.3-1ubuntu5) 最佳答案 它并没有真正打印空白,但很可能是值为5的ASCII字符

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给了我以下错误(缩短,我认为