如果我使用"-O2"标志,性能会提高,但编译时间会变长.
我该如何决定是否使用它?
也许O2在某些特定类型的代码中有很大差异(例如数学计算?),我应该只将它用于项目的那些部分?
编辑:我想强调的是,为项目的所有组件设置-O2会将总编译时间从10分钟更改为30分钟.
我的类ClassA中的所有成员变量和成员函数都是静态的.
如果用户正在尝试(错误地)创建此类的对象,则会收到警告:"ClassA,本地变量从未引用",因为所有函数都是静态的,因此永远不会引用此对象.所以,我想阻止用户尝试创建这个类的对象.
是否足以创建一个私有默认(无变量)构造函数?或者我是否还必须创建私有拷贝构造函数和私有赋值运算符(以防止使用默认构造函数)?如果我也必须创建它们,也许最好只创建一些虚拟纯虚函数,这会阻止用户创建一个对象?
谢谢
我有正整数的3个基本表示:
我希望能够以最有效的方式在所有3个表示中的数字之间进行转换.即实现以下6个功能:
unsigned long int Binary2Dec(const string & Bin) {}
unsigned long int Hex2Dec(const string & Hex) {}
string Dec2Hex(unsigned long int Dec) {}
string Binary2Hex(const string & Bin) {}
string Dec2Binary(unsigned long int Dec) {}
string Hex2Binary(const string & Hex) {}
Run Code Online (Sandbox Code Playgroud)
每种方法最有效的方法是什么?我可以使用C和C++,但不能提升.
编辑:"效率"是指时间效率:最短的执行时间.
我在我的应用程序(Ubuntu)中使用ffmpeg,以便能够更好地理解我希望能够通过它调试的工作方式,为此,在编译时我使用以下'./configure'选项:
有了这个设置,我能够通过调试器(gdb)逐步执行'ffmpeg',但是,我无法评估任何变量,只有代码位置是可解析的...
我做错了什么?为什么我不能评估变量?
任何帮助将不胜感激.
在我使用的外部代码中有枚举:
enum En {VALUE_A, VALUE_B, VALUE_C};
Run Code Online (Sandbox Code Playgroud)
在我使用的另一个外部代码中有3个#define指令:
#define ValA 5
#define ValB 6
#define ValC 7
Run Code Online (Sandbox Code Playgroud)
很多时候我的int X等于ValA或ValB或ValC,我必须将其转换为相应的En值(ValA到VALUE_A,ValB到VALUEB等),因为某些函数签名具有enum En.很多时候我必须做相反的操作,将enum En翻译成ValA或ValB或ValC.我不能改变这些函数的签名,并且有很多这样的函数.
问题是:如何进行翻译?我应该创建2个强制使用的强制转换操作符吗?或者我应该只有2个明确使用的翻译函数:
En ToEn(int)
int FromEn(En)
Run Code Online (Sandbox Code Playgroud)
或任何其他解决方案?
是否可以传递函数对map元素的值的引用,并在那里修改它?
foo(string & s)
{
s = "xyz";
}
map<int, string> m;
m[1] = "abc";
foo(m[1]); // <-- Is it ok? Will m[1] be "xyz" after this call?
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个应用程序,可以在使用Perl/TKGUI的Windows,Linux和Solaris上运行.由于条件的限制,我们只限于学习Perl/TK 只.而且,我们仅限于旧Perl/Tk版本5.00404.
我想在这些限制内工作,使GUI看起来尽可能美观和现代.
是否有任何网络资源具有传统知识设计方案(按钮,框架,颜色等),可以帮助我完成这项工作?
我也在寻找像我在这里找到的现代化建议:
如果您发现您的Tk应用程序在基于X的系统上看起来有点难看,请尝试在脚本顶部添加以下行:
Run Code Online (Sandbox Code Playgroud)$mw->optionAdd("*font", "-*-arial-normal-r-*-*-*-120-*-*-*-*-*-*"); $mw->optionAdd("*borderWidth", 1);
我用两个函数read()和write()来序列化我的大多数类.我想要做的是从子类调用基类的read/write()函数,这样我就不必多次重复序列化代码了.
例如:
class Base
{
public:
base();
virtual read(QDataStream&);
virtual write(QDataStream&);
private:
int a, b, c, d;
}
class Sub : public Base
{
public:
Sub();
read(QDataStream&);
write(QDataStream&);
private:
int e, f, g, h;
}
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,我希望代码读/写a,b,c,d来自Base.然后,Sub将调用Base :: read(QDataStream&),然后添加Sub独有的任何属性.这样我就不必为每个子类重复序列化代码(并且可能忘记这样做).
我正在尝试设计一个主窗口和一个QDialog,并找到从a返回数据的最佳方法QDialog.
现在我正在捕捉accepted()来自对话框的信号,之后我调用了返回数据的对话框函数.有没有更好的方法?
这是我现在的工作代码:
class MainWindow : public QMainWindow
{
// ...
public slots:
void showDialog()
{
if (!myDialog)
{
myDialog = new Dialog();
connect(myDialog, SIGNAL(accepted()), this, SLOT(GetDialogOutput()));
}
myDialog->show();
}
void GetDialogOutput()
{
bool Opt1, Opt2, Opt3;
myDialog->GetOptions(Opt1, Opt2, Opt3);
DoSomethingWithThoseBooleans (Opt1, Opt2, Opt3);
}
private:
void DoSomethingWithThoseBooleans (bool Opt1, bool Opt2, bool Opt3);
Dialog * myDialog;
};
Run Code Online (Sandbox Code Playgroud)
对话:
class Dialog : public QDialog
{
// ...
public:
void GetOptions (bool & Opt1, bool & Opt2, …Run Code Online (Sandbox Code Playgroud) 容易出问题和已知算法:
我有一个拥有100名成员的大阵容.前X个成员为0,其余为1.查找X.
我通过二分搜索来解决它:检查成员50,如果它是0 - 检查成员75等,直到我找到相邻的0和1.
我正在寻找一个针对二维相同问题的优化算法:
我有二维数组100*100.在0-X行和0-Y列上的那些成员是0,其余的是1.如何找到Y和X?
c++ ×8
qt ×2
algorithm ×1
binary ×1
c ×1
casting ×1
constructor ×1
decimal ×1
enums ×1
ffmpeg ×1
gcc ×1
gdb ×1
hex ×1
map ×1
namespaces ×1
oop ×1
optimization ×1
overriding ×1
perl ×1
perltk ×1
qdialog ×1
static ×1
stl ×1
tk-toolkit ×1
unix ×1