草庐IT

c++ - 我可以在 vector 上创建 View 吗?

我有一个函数需要对给定的元素进行排序。不得更改原始vector,因此我需要该vector的浅表拷贝。因为我不需要自己复制元素,因为它们只被读取,所以我决定制作一个指针vector。目前我有一个简单的循环填充vector,但我想知道是否存在甚至可能更快的内置/标准解决方案。voidcalcFindMinLeftAndSort(std::vector&locationsComplete,std::vector&locationsSorted){//...//copydatainnewarray,tokeeptheoriginaluntouchedlocationsSorted.reserv

c++ - 在 Visual Studio 中,我可以在断点处绘制我的变量吗?

在我的nativeC++程序的VisualStudio中,我想在调试期间获取一些变量的绘图。大多数情况下,我通过编辑autoexp.dat使用对象的文本表示。但对于某些变量,最好绘制图表而不是文本形式的值。到目前为止,我使用了一个函数plot(constvoid*address,constchar*type),并从立即窗口调用它,给出变量地址和类型,并在内部将其转换为正确的类型。但是这种方法有两个缺点:首先是,当从调试器调用函数时,函数重载几乎不起作用(因此我不得不将类型作为第二个参数传递),并且函数调用偶尔会崩溃,尽管从代码中调用时它工作得很好。其次,我没有编写用于绘图的C++函数,

c++ - 我可以在调用者处将函数参数默认为 __FILE__ 的值吗?

在C++中,我可以为一个函数设置一个默认参数吗?该参数默认为__PRETTY_FUNCTION___、___FILE___和___LINE__,如此时定义的那样是调用者的,而不是在不使用宏的情况下在头文件中提供默认值的点? 最佳答案 你不能,但你可以用一个额外的宏来实现这个行为。例如:#DEFINETHROW(e)throwException(e,__FILE__,__LINE__);附带说明,__PRETTY_FUNCTION__不是标准的。 关于c++-我可以在调用者处将函数参数默认

c++ - 我可以获得未处理(目标)C++ 异常的堆栈跟踪吗?

我正在开发一个iOS应用程序,该应用程序最近发展了一个大型C++基础。C++不是我的强项,我对异常感到沮丧。我正在寻找的是一种获取(未处理的)异常抛出站点的堆栈跟踪的方法。我会说“未处理”限定符是可选的;我会接受在任何异常抛出时中断作为最后的手段,尽管未处理的异常是理想的。我目前得到的是无用的。假设我在调用堆栈的上层没有任何合适的异常处理程序,我会做类似的事情std::vectormy_vector;my_vector.at(40)=2;//Throwsstd::out_of_range应用程序将在main()中中断,我将收到一条日志消息,内容为“终止调用引发异常”。没有帮助。将通用的

c++ - 我可以从两个 oci 客户端维护一个 Oracle session 吗?

是否有可能从一个进程连接到Oracle(通过OCI),然后从另一个进程连接到同一个数据库session?在我当前的应用程序中,有两种访问数据库的方式:同步方式和异步方式(通过使用单独的进程,通过套接字进行通信)。问题是这两种方法实现了不同的session。如果我尝试,例如在一个session上更新,然后尝试在不提交的情况下从另一个session更新同一个表,我在OCI调用上挂起。更糟糕的是,如果一个session变量是从一个session设置的——另一个session看不到它(这正是名字所说的...)。 最佳答案 如果您使用的是11

c++ - 我可以用 C++ 中的模板类来做到这一点吗

我有一个类似于这个的类:intadd(inta,intb){returna+b;}intsub(inta,intb){returna-b;}classC{intm_functionType;C(intfunctionType){m_functionType=functionType;}intcalc(inta,intb){switch(m_functionType){case1://addreturnadd(a,b);break;case2://subtractreturnsub(a,b);}}};使用方法如下:main(){Cadd(1);Csub(2);autox=add.calc

c++ - 我想我可以理解 N4140 中的 §5.3.4/11,但是扩展的分配函数的概念对我来说是不可理解的

以下两段是从N4140复制的(重点是我的)。§5.3.4/11:Whenanew-expressioncallsanallocationfunctionandthatallocationhasnotbeenextended,thenew-expressionpassestheamountofspacerequestedtotheallocationfunctionasthefirstargumentoftypestd::size_t.Thatargumentshallbenolessthanthesizeoftheobjectbeingcreated;itmaybegreatertha

c++ - 我可以使用 memcpy 写入多个相邻的标准布局子对象吗?

免责声明:这是试图深入研究一个更大的问题,因此请不要纠结于该示例在实践中是否有意义。而且,是的,如果您想复制对象,请使用/提供复制构造函数。(但请注意,即使是示例也不会复制整个对象;它会尝试在几个相邻的(Q.2)整数上blit一些内存。)给定一个C++StandardLayoutstruct,我可以使用memcpy一次写入多个(相邻的)子对象?完整示例:(https://ideone.com/1lP2Gdhttps://ideone.com/YXspBk)#include#include#include#include#include#includestructMyStandardLa

c++ - 我可以在 C++ 中仅使用 std::atomic 而不使用 std::mutex 安全地跨线程共享变量吗?

我制作了一个在多核上计算素数的程序。(请忽略该算法并非完全有效,这里将数字0和1视为质数。目的只是练习使用线程。)变量taken(接下来要测试的数字)正在8个线程之间共享。问题是它可以由一个线程递增,紧接着由另一个线程递增,并在它已经递增两次(或更多次)时被它们读取,因此可以跳过一些值,这是一件坏事。我以为它可以通过使用std::atomic_uint作为变量类型来解决,但我显然错了。有什么方法可以在不需要使用std::mutex的情况下解决这个问题,因为我听说它会导致相当大的开销?源代码:#include#include#include#include#include#include

c++ - 我可以在 C++ 中使用的最小嵌入式浏览器是什么?

我需要使用HTML/CSS/JavaScript构建我的应用程序GUI具有C++后端所有跨平台。我做了简单的测试与QtWebKit,XULRunner和Mozilla。好吧,从简单的睾丸我注意到一些非常打击我,这是浏览器的部署大小库/框架。它很大:8MB及以上。是否缺少某种较小的嵌入式浏览器? 最佳答案 我不知道其他平台,但在Windows上执行此操作的最小方法是使用系统内置的Web浏览器控件。它基于COM,编程起来可能相当复杂。下面的代码让你成为这样的野兽:HWNDhtmlWindow=::CreateWindowExA(dwEx