我基本上想要创建由三个操作符号组成的字符串(例如:+-*或++/或+++).这些字符串中的每一个都应将其推入vector opPermutations 到目前为止,这是我的代码: // Set up permutations for operators string operatorBank[4] = {"+","-","*","/"}; do { string currentPerm = operatorBank[0] + operatorBank[1] + operatorBank[2] + operatorBank[3]; this -> opPermutations.push_back(currentPerm); } while ( std::next_permutation(operatorBank, operatorBank + 4) ); 将被推入向量的排列(如字符串)为: +-*/
以下是关于 g++ 的编程技术问答
我使用VirtualBox运行Linux Ubuntu 10.4 VM.我正在尝试使用oprofile来介绍虚拟机中的某些应用程序.我已经安装了Oprofile 0.9.6,但我无法正常工作.当我尝试启动时,我会收到以下错误: opcontrol --start /usr/local/bin/opcontrol: line 323: /usr/local/bin/ophelp: cannot execute binary file /usr/local/bin/opcontrol: line 1483: /usr/local/bin/oprofiled: cannot execute binary file Couldn't start oprofiled. Check the log file "/var/lib/oprofile/samples/oprofiled.log" and kernel syslog 我不确定VirtualBox是否可以提供对性能计数器的访问权限(
我创建了一个C ++功能,该功能是一个更大项目的一部分.此功能被称为很多.为了提高性能,我们决定将该功能分为4个部分,每两个并联运行.完整的程序需要一个输入,只有一个输入,然后进行模拟,它将长度2000变量传递给了所讨论的函数. 此功能在变量上运行(最大操作20,096,添加150,000个,没有乘法).这些操作由FUNC1和FUNC2并行完成,两次(因此,每次功能都在这些操作的四分之一时).这两个功能都在内存中共享相同的输入(double Signal size 700(仅读),double A, B, C, H,(所有大小(double)5600,写入和读取))和输出(double L size 700). 不需要静音,因为func1在A,B,C,H(读写)的一半(读写)中工作,并在L中写入一半,而Func2在其一半中也可以做到.但是,在某些情况下,两个函数或线程都同时读取信号.在第二个通话中,线程几乎进行相同的操作. 问题在于,螺纹程序的运行速度比串行程序慢一点.当我
我已经移植了一块C ++代码,该代码从Linux(Ubuntu)到Windows(Vista),并且我意识到它在VS2008上的工作速度约为50倍!我删除了所有核心部位,现在我只有一块代码与硬盘无关. 我将编译器参数设置为项目属性中的O2,但仍比Linux中的G ++慢约10倍! 有人知道为什么在vs? 下要慢得多 我真的很感谢任何提示! 谢谢, 解决方案 您是否使用大量标准C ++库?如果是这样,您可能需要关闭Visual C ++(即使在发布模式)中默认打开的"检查迭代器"功能.在包含任何标准标头之前将其放置: #define _SECURE_SCL 0 在此处提供更多信息./p> 其他解决方案 无需猜测.只需点击"暂停"按钮,然后查看堆栈即可.您错过问题的机会是1/50.如果不确定,请进行几次.
我在这个论坛上是新手,所以请原谅我第一次不问这个问题. 我认为在这里不需要提供代码,因为我认为这与代码无关,并且问题可能更笼统. 我使用Windows XP中的Mingw(G ++)在Netbeans 7.1.2中编写并构建了一个C ++项目.两者都可以进行调试版本和发行版本效果很好,并提供了计算的所需输出.但是,如果我在Netbeans的内部终端中"运行"项目(任何一个项目),则可以测量115至130微秒之间的计算时间.如果我在Windows命令提示符中执行EXE文件,则测量计算时间在500至3000微秒之间. (在2.2 GHz Intel Core 2 Duo上,带有2 GB RAM.我通过阅读自重置和除以CPU频率以来的CPU时钟滴答数来测量时间.) 我在另一台计算机(包括构建项目)上尝试了同样的尝试,也是2.2 GHz和16 GB RAM和Windows7.该程序运行速度更快,但模式相同.当我从Netbeans运行该项目时,但在外部终端(还有Windows终端)时也是如
我在这个论坛上是新手,所以请原谅我第一次不问这个问题. 我认为在这里不需要提供代码,因为我认为这与代码无关,并且问题可能更笼统. 我使用Windows XP中的Mingw(G ++)在Netbeans 7.1.2中编写并构建了一个C ++项目.两者都可以进行调试版本和发行版本效果很好,并提供了计算的所需输出.但是,如果我在Netbeans的内部终端中"运行"项目(任何一个项目),则可以测量115至130微秒之间的计算时间.如果我在Windows命令提示符中执行EXE文件,则测量计算时间在500至3000微秒之间. (在2.2 GHz Intel Core 2 Duo上,带有2 GB RAM.我通过阅读自重置和除以CPU频率以来的CPU时钟滴答数来测量时间.) 我在另一台计算机(包括构建项目)上尝试了同样的尝试,也是2.2 GHz和16 GB RAM和Windows7.该程序运行速度更快,但模式相同.当我从Netbeans运行该项目时,但在外部终端(还有Windows终端)时也是如
我知道GCC中的链接顺序对于正确确定的符号很重要.但 现在,我看到了由此产生的可执行文件的奇怪速度问题.我将对象和大型链接为 g ++ -M32 A.O B.O AR1.A AR2.A -LM -LPTHREAD -LCRYPT -LZ -LZ -PTHREAD -O AFAST.OFAST.OUT.OUT vs g ++ -m32 a.o ar1.a b.o ar2.a -lm -lpthread -lcrypt -lz -lz -pthread -o aslow.out.out 第二版本慢2倍. B.O实际上是在AR1中,但AR2.O对此有所参考,因此Linker抱怨,因此我不得不将B.O.一开始,我一直将B.O一直延伸到链接的末端,以制定正确的依赖性顺序,尽管然后弄清楚它甚至在开始时甚至更快地工作. 有人经历过吗?对象文件链接顺序与拱门订单不同吗?怎么会有任何速度影响? 使用GCC3.4.6或GCC4.1.2 获得类似的结果 解决方案 在执
do const声明可帮助编译器(GCC)产生更快的代码,或者它们仅对可读性和正确性有用? Zed Shaw认为const是没有用的,或者在C/C ++中过度使用: 接下来是对const的所有奇怪的迷恋.出于某种奇怪的原因 C ++喜欢让您在声明的每个部分都打耳光,并且 但是我得到的最终结果与C:调用函数相同. (...) (来自:/MONGREL2/2010/7/15/C-VERSES-C ++/#770D94BCFC6DDF1D8510199999996B607DD ) 解决方案 在通常的方法中,在一般const中,引用和指针不能用于优化代码,原因有几个原因.主要的是,在这些情况下,const修改器并不能保证基础数据不更改,这只是使修改它变得更加困难.这是一个经典的例子 void M(const C& p1, C& p2) { cout
我正在使用Linux上的MingW32交叉编译器构建大量自动生成的代码,包括一个特别大的文件(〜15k行).大多数文件非常快,但是这个大文件需要意外的时间(〜15分钟)才能编译. 我尝试操纵各种优化标志,以查看它们是否有任何作用,没有任何运气.我真正需要的是确定G ++在做什么花费这么长时间的方法.是否有任何(相对简单的)方法使G ++产生有关汇编不同阶段的输出,以帮助我缩小挂断可能是什么? 可悲的是,我没有能力重建该交叉兼容器,因此在编译器中添加调试信息并逐步添加它是不可能的. 文件中的内容: 一堆包括 一堆字符串比较 一堆IF-然后检查和构造函数Invocations 该文件是生产某个父母类的大量不同特定子类的工厂.然而,大多数包括什么都没有太多的幻想. 正如尼尔·巴特沃思(Neil Butterworth)所建议的-FTIME -REPORT的结果表明,"生命分析"阶段需要921秒,这占用了15分钟的大部分. 看来这是在数据流分析期
我正在开发一些工程模拟.这涉及实现一些长时间(例如这个方程)来计算材料等橡胶中的压力: T = ( mu * ( pow(l1 * pow(l1 * l2 * l3, -0.1e1 / 0.3e1), a) * a * ( pow(l1 * l2 * l3, -0.1e1 / 0.3e1) - l1 * l2 * l3 * pow(l1 * l2 * l3, -0.4e1 / 0.3e1) / 0.3e1 ) * pow(l1 * l2 * l3, 0.1e1 / 0.3e1) / l1 - pow(l2 * pow(l1 * l2 * l3, -0.1e1 / 0.3e1), a) * a / l1 / 0.3e1 - pow(l3 * pow(l1 * l2 * l3, -0.1e1 /
如何给我的C ++程序一个图标?我正在使用ubuntu 11.10的G ++编译. 解决方案 在Linux上,可执行文件没有图标.您需要创建一个可以给出图标的.desktop文件.参见在这里 > 在Windows上,您可以使用资源文件将文件本身为图标.请参阅在这里,特别是,特别是在这里进行解释. 其他解决方案 除了Rubenvb和Joe McGrath已经说过的内容外,请注意,使用Windows,您要显示的图标,因为该应用程序的默认图标必须首先发生(即资源文件中的任何其他图标). 其他解决方案 在Windows上,您可以自己在可执行文件中包含图标.有一些程序将资源添加到文件中.添加资源的不是编译器. 在Linux上,它不是在可执行文件本身中完成的.先前在
尝试将我的程序与5.5服务器提供的MySQL库链接时,我会收到undefined reference to 'mysql_suchandsuch@#'消息.安装MySQL后,我使用了默认路径,Windows上的Windows是C:\Program Files\MySQL\MySQL Server 5.5\.最初,我以为这些空间正在引起我的悲伤,但是我认为我正确地弄清楚了如何在没有空间的情况下指向图书馆路径(仍然没有运气).如果还有另一个可能的原因,请告诉我. 我在此网站上回顾了一系列问题,试图解决我的问题... 问题1 问题2 问题3 问题4 问题5 问题6 问题7 使用mingw/g ++,我试图根据自己的研究以及在此处提出的建议使用以下选项链接: -l" c:\ program文件\ mysql \ mysql Server 5.5 \ lib \" -llibmysql.lib -l" c:\ program文件\ mysql \ mysql
我在Windows上使用Cygwin来运行此命令: g++ `pkgconfig --libs --cflags opencv` -I. -o mergevec mergevec.cpp .... 但是我有一个错误: -bash: pkg-config: command not found 我已经直接在C::.我添加到路径环境变量以下: C:\cygwin64\bin; C:\cygwin64\lib 我已经运行cygcheck -c,它为我提供了整个软件包列表,但是pkg-config不在该列表中. 但是,有一个在C:\cygwin64\lib中称为pkgconfig的文件夹. 我如何解决此错误? 解决方案 pkg-config是一件软件,可让您的计算机查看已安装的库进行源编译.它可能不会安装在Windows上,因此在最后情况下,请检查安装. 但是,在您的情况下,我认为它已安装,但没有设置在Linux命令的正确路径上.尝试输入cygwin:
我有一个C ++程序test.cpp,我想将两个.lib文件链接到它(fhlib.lib和gc_lib.lib).i我在同一文件夹中与我的.cpp程序中有.lib文件.我在Windows 7上. 我到目前为止尝试的是以下内容: g++ -o main main.cpp -L/Users\Documents\Visual Studio 2015\Projects\My Project -lfhlib 但我得到了 No such file or directory error. 我确定路径是正确的,因为我从属性 - >位置复制了路径.但是我确实删除了" C:\",因为它没有编译. 编辑:我找到了此 . 所以我尝试使用 "-I" instead of "-l" 但仍然不起作用.我得到: undefined reference to 'fh_set'... 解决方案 因此,问题在于lib文件在Vs中进行了编译.我不得不使用VS编译器,而
我试图将额外库的路径包括在我的makefile中,但是我不知道如何让编译器使用该路径.到目前为止,我有: g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test ,我想包括 的路径 /data[...]/lib 因为testing.cpp包括来自该库中的文件.另外,我在Linux机器上. 编辑:不是通往库的路径.仅来自该库中的标题文件.我的坏. 解决方案 要指定一个目录以搜索(二进制)库,您只需使用-L: -L/data[...]/lib 要指定实际库名,您使用-l: -lfoo # (links libfoo.a or libfoo.so) 指定目录以搜索 include 文件(与库不同!),您使用-I: -I/data[...]/lib 所以我认为您想要的是 g++ -g -Wall -I/data[...]/lib testing.cpp file
背景 这是受这个问题/答案的启发,随后在评论中进行了讨论:是"波动"的定义海湾合作委员会有一些标准的合规问题吗?.如其他人所讨论的那样,基于他人的解释,我将其提交给GCC Bugzilla: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71793 仍然欢迎其他相关响应. 此外,该线程从那以后引起了这个问题:确实通过挥发性参考/指针赋予挥发性挥发性规则访问了声明的非挥发对象上述访问? 介绍 我知道volatile并不是大多数人认为的,是的实现定义的毒蛇巢.我当然不想在任何实际代码中使用以下构造.也就是说,这些示例中发生的事情使我感到困惑,所以我真的很感谢任何阐明. 我的猜测是由于对标准的高度细微差别的解释,还是(更可能?)仅用于使用的优化器的角式.无论哪种方式,虽然学术上比实用性更大,但我希望这对分析非常有价值,尤其是考虑到通常被误解的volatile是多么典型.更多的数据点 - 或更有可能与之相反的点必须是好的.
这个问题不是嵌套循环的重复. OP希望减少最大值,同时存储两个索引.融合循环不会解决操作问题. OP仍将在共享索引上有种族条件,并将访问降低的值,该值直到减少后才合并(有关OPS问题的一种解决方案,请参阅我的答案). i有一个2D矩阵x,x [i] [j]表示点I和j.follow代码之间的距离是根据嵌套环中的余弦距离找到最接近的两个点: //m,n is the rows,columns of X respectively int mi,mj; for(int i=0;imax_distance) { max_distance=distance; mi=i; mj=j;