草庐IT

different-size

全部标签

c++ - 列表容器上的 std::set_difference

我正在尝试调用set_difference函数,并将结果放在std::list中。理论上,可以在任何排序的容器上执行此操作,对吧?listv;listl1;listl2;list::iteratorit;//l1andl2arefilledherel1.sort();l2.sort();it=set_difference(l1.begin(),l1.end(),l2.begin(),l2.end(),v.begin());但是,v返回的是一个空列表。是因为我不能在列表容器上使用它吗? 最佳答案 这是因为v.begin()是一个空序列

c++ - 使用 -1 作为无符号 (size_t) 类型的标志值

我使用-1作为返回类型为size_t(无符号类型)的函数的标志值。一开始我没有注意到它,特别是因为它没有在我的代码中造成任何错误(我用x==-1来检查它,而不是x有什么微妙的原因我不应该保持原样吗?这什么时候可能会出乎意料?这个常用吗?ptrdiff_t不太常见,需要更长的输入时间,而且它并不是真正合适的类型,因为该函数返回数组的索引。 最佳答案 -1将始终转换为最大无符号值,这是由于4.7Integralconversions部分:Ifthedestinationtypeisunsigned,theresultingvalueis

c++ - 段错误 : and the disassembly is different between objdump and gdb

[深呼吸。]我们有一个使用WxMotif2.6.3弹出窗口的应用程序(GUI库过去不是——现在也不是——我的选择)。它在32位ix86系统上运行良好。我的任务是将它转换为64位应用程序。它总是出现段错误。我在RHEL6上,所以我使用gcc4.4.7编译。在咬牙切齿之后,问题似乎很明显:在wxFrame::DoCreate中,m_mainWidget被设置(正确);在wxFrame::GetMainWidget中,它作为空指针返回。空指针导致崩溃。使用gdb,设置m_mainWidget的指令是mov%rax,0x1e0(%rdx)#$rdx=0x68b2f0而获取m_mainWidge

c++ - 使用可变参数模板重载函数模板 : Intel c++ compiler version 18 produces different result from other compilers. intel 错了吗?

考虑以下代码片段:templateclassA,typename...Ts>inta(Aarg){return1;//Overload#1}templateinta(Aarg){return2;//Overload#2}templatestructS{};intmain(){returna(S());}在使用模板类的实例调用函数a时,我希望编译器选择更特殊的函数重载#1。根据compilerexplorer、clang、gcc和17版之前的英特尔实际上会选择重载#1。相反,后来的英特尔编译器版本(18和19)选择重载#2。是代码定义不正确还是最新的英特尔编译器版本有误?

c++ - 使用 mingw-w64 工具链时,以 Release模式链接的 Regex Boost 库会发出 "duplicate section has different size"警告

在Release模式下链接我的项目时,我收到以下警告:myProject-libs/release/libboost_regex-mt-s-1.50.0.a(cpp_regex_traits.o):duplicatesection`.data$_ZZN5boost16cpp_regex_traitsIcE21get_catalog_name_instEvE6s_name[boost::cpp_regex_traits::get_catalog_name_inst()::s_name]'hasdifferentsize我怀疑原因可能是boost库的编译选项与我在项目中使用的选项不同,但我

c++ - 调用 std::adjacent_difference() 时的隐式转换

我想获得vector中相邻点之间的距离vector:structPoint{doublex,y,z;}vectoradjacent_distances(vectorpoints){...}我认为stl::adjacent_difference()如果我简单地提供一个函数来找到两点之间的距离,我会成功的:doublepoint_distance(Pointa,Pointb){returnmagnitude(a-b);//implementationdetailsareunimportant}因此,我希望这会奏效,vectoradjacent_distances(vectorpoints)

java - C++ 和 Java 数组声明/定义 : differences

我的问题真的很简单(这并不意味着答案会很简单..:D)为什么C++中的数组将大小作为类型的一部分,而Java中却没有?我知道Java数组引用变量只是指向堆上数组的指针,但C++指向数组的指针也是如此,但即使那样我也需要提供一个大小。先分析一下C++://inC++://anarrayonthestack:intarray[*constexpr*];//abidimensionalarrayonthestack:intm_array[*constexpr1*][*constexpr2*];//amultidimensionalarrayonthestack:intmm_array[*co

c++ - 施放 ssize_t 或 size_t

在我的项目中使用的源文件中,ssize_t和size_t变量之间有一个比较:ssize_tsst;size_tst;if(sst==st){...}我想摆脱警告:warning:comparisonbetweensignedandunsignedintegerexpressions但我不确定,我应该将哪个变量转换为另一个变量?if((size_t)sst==st){...}或if(sst==(ssize_t)st){...}什么更安全、更好、更清洁?谢谢 最佳答案 这个问题没有唯一的正确答案。有几种可能的答案,具体取决于您对这些变量

c++ - constexpr 上下文中 std::array 指针的 size()

假设我有一个函数:inttest(std::array*data){charbuffer[data->size()*2];[...somecode...]}显然可以在编译时评估缓冲区的大小:数据的constexpr大小为8个元素,8*2=16字节。然而,当使用-Wall、-pedantic和-std=c++11编译时,我得到了臭名昭著的错误:warning:variablelengtharraysareaC99feature[-Wvla-extension]我认为这是有道理的:array::size()是constexpr,但它仍然是一个方法,在上面的函数中我们仍然需要取消引用一个指针

c++ - 为什么 Codan 找不到 size_t

我刚刚开始使用EclipseIndigo(来自Galileo),每次使用size_t时,我都会遇到一些红色的小错误。代码编译没有问题,但我怀疑我必须显式添加到包含目录的路径。我已经有常见的嫌疑人了。我正在使用Gnu工具链为ColdFire处理器进行交叉编译,因此除了来自芯片制造商的标准包含之外,我还包含m68k-elf下的包含\include\include\c++\4.2.1\include\c++\4.2.1\include\include\c++\4.2.1\m68k-elf更新我注意到这个工具链唯一存在stddef.h的地方是lib目录gcc-m68k\lib\gcc\m68k