草庐IT

shared_int

全部标签

c++ - 初始化 int 影响函数返回值

很抱歉这个问题的标题含糊不清,但我不确定如何准确地提出这个问题。以下代码在Arduino微处理器(为ATMega328微处理器编译的c++)上执行时运行良好。返回值显示在代码的注释中://ReturntheindexofthefirstsemicoloninastringintdetectSemicolon(constchar*str){inti=0;Serial.print("i=");Serial.println(i);//prints"i=0"while(i如预期的那样,这会输出“2”作为第一个分号的位置。但是,如果我将detectSemicolon函数的第一行更改为inti;即

c++ - 如何在 int 类型的二维 vector 中 push_back 数据

我有一个vector,想在运行时将int数据存储到其中,我可以用这种方式将数据存储在2Dvector中吗?std::vector>normal:for(i=0;i 最佳答案 是的,但您还需要插入每个子vector:std::vector>normal;for(inti=0;i());for(intj=0;j 关于c++-如何在int类型的二维vector中push_back数据,我们在StackOverflow上找到一个类似的问题: https://stack

c++ - 为什么 shared_ptr 有显式构造函数

我想知道为什么shared_ptr没有隐式构造函数。这里提到了它没有的事实:Gettingaboost::shared_ptrforthis(我想出了原因,但认为无论如何发帖都会是一个有趣的问题。)#include#includeusingnamespaceboost;usingnamespacestd;voidfun(shared_ptrptr){cout'requested*/ 最佳答案 在这种情况下,shared_ptr将尝试释放您分配给堆栈的int。你不会想要那样的,所以显式构造函数会让你考虑一下。

c++ - unsigned char 数组到 unsigned int 通过 memcpy 返回到 unsigned char 数组被反转

这不是跨平台代码...所有内容都在同一平台上执行(即字节序是相同的......小字节序)。我有这个代码:unsignedchararray[4]={'t','e','s','t'};unsignedintout=((array[0]unsignedcharbuff[4];memcpy(buff,&out,sizeof(unsignedint));std::cout我希望buff的输出是“test”(由于缺少“/0”而带有垃圾尾随字符),但输出却是“tset”。显然,更改我要移动的字符的顺序(3、2、1、0而不是0、1、2、3)可以解决问题,但我不明白这个问题。memcpy是否没有按我预

c++ - std::list of boost::shared_ptr 的迭代器问题

我在使用以下代码时遇到问题:#include#include#include"Protocol/IMessage.hpp"templateclassConnection{public:typedefIMessageMessageType;typedefboost::shared_ptrMessagePointer;templatevoidFlushMessageQueue(Handlerhandler){std::list::iteratorib=message_queue_.begin();//line69std::list::iteratorie=message_queue_.en

c++ - boost shared_ptr use_count 函数

我的申请问题如下-我有一个大结构foo。因为它们很大并且出于内存管理的原因,我们不希望在数据处理完成后删除它们。我们将它们存储在std::vector>.中我的问题与了解所有处理何时完成有关。第一个决定是我们不希望任何其他应用程序代码在结构中标记一个完整的标志,因为程序中有多个执行路径,我们无法预测哪一个是最后一个。因此在我们的实现中,一旦处理完成,我们将删除boost::shared_ptr>的所有拷贝除了vector中的那个。这会将shared_ptr中的引用计数器降为1。使用shared_ptr.use_count()查看它是否等于1以了解我的应用程序的所有其他部分何时处理完数据

c++ - boost::shared_ptr<const T> 到 boost::shared_ptr<T>

我想从boost::shared_ptr中转换常量,但我boost::const_pointer_cast不是答案。boost::const_pointer_cast想要一个constboost::shared_ptr,不是boost::shared_ptr.让我们放弃强制性的“你不应该那样做”。我知道...但我需要这样做...那么最好/最简单的方法是什么?为了清楚起见:boost::shared_ptrorig_ptr(newT());boost::shared_ptrnew_ptr=magic_incantation(orig_ptr);我需要知道magic_incantation

原始指针和 shared_ptr 之间的 C++ 接口(interface)

我的代码自始至终都使用原始指针。它需要调用一个方法,将原始指针放入shared_ptr。这个方法不受我控制,属于外部api。我不能只将指针传递给shared_ptr因为它什么时候会被删除当shared_ptr超出方法的范围时(当方法返回时)。除了在内部代码中将原始指针设为shared_ptr之外,我还有其他选择吗? 最佳答案 这听起来有些不寻常并且可能非常危险,但是您可以通过在构造shared_ptr时使用无操作删除器来完成此操作:structno_op_delete{voidoperator()(void*){}};int*p=0

c++ - 在 shared_ptr 的容器上使用 C++ std::equal

我有一个std::shared_ptr的容器。我想使用std::equal比较两个容器。类A定义了operator==。我想使用其运算符==比较每个元素是否等效,而不是shared_ptr中定义的那个。我是否需要让一个函数或函数对象传递给equal?或者是否有一些内置的东西会更简单(比如中定义的东西)? 最佳答案 您将需要一个函数或一个函数对象或一个lambda表达式(因为您可以使用std::shared_ptr,所以您已经启用了C++0x的某些部分)。中没有任何内容帮助你,但有一些东西在提升:indirectiterator#in

C++ Int 到 String 通过使用 ostringstream 或 stringstream

我一直在使用stringstream将Integer转换为String,但后来我意识到可以使用ostringstream完成相同的操作。当我使用.str()时,它们之间有什么区别?另外,有没有更有效的方法将整数转换为字符串?示例代码://usingostringstreamostringstreams1;inti=100;s1 最佳答案 还有第三个你没有提到,istringstream,你不能使用(你可以,但它会有所不同,你不能将转换为istringstream)。stringstream既是ostringstream和一个istr