我的旧修剪功能:
string TailTrimString (const string & sSource, const char *chars) {
size_t End = sSource.find_last_not_of(chars);
if (End == string::npos) {
// only "*chars"
return "";
}
if (End == sSource.size() - 1) {
// noting to trim
return sSource;
}
return sSource.substr(0, End + 1);
}
Run Code Online (Sandbox Code Playgroud)
而不是它我决定使用boost,写下了琐碎的事情:
string TailTrimString (const string & sSource, const char *chars) {
return boost::algorithm::trim_right_copy_if(sSource,boost::algorithm::is_any_of(chars));
}
Run Code Online (Sandbox Code Playgroud)
我惊讶地发现新功能的工作速度要慢得多.我做了一些分析,我发现这个功能is_any_of非常慢.
boost的实现是否可能比我非常简单的实现慢?有什么我应该使用而不是is_any_of为了提高性能?
我还在boost的邮件列表中找到了关于此问题的讨论,但我仍然不确定如何提高代码的性能.
我使用的升级版本是1.38,这是相当古老的,但我想这段代码从那以后没有太大变化.
谢谢.
容易出问题和已知算法:
我有一个拥有100名成员的大阵容.前X个成员为0,其余为1.查找X.
我通过二分搜索来解决它:检查成员50,如果它是0 - 检查成员75等,直到我找到相邻的0和1.
我正在寻找一个针对二维相同问题的优化算法:
我有二维数组100*100.在0-X行和0-Y列上的那些成员是0,其余的是1.如何找到Y和X?
当我编写代码时,我想使用ANSI C样式,但c.vim模板中的代码样式是K&R.
我在哪里可以获得另一个模板或任何其他插件而不是c.vim?
当我发布我的Qt项目时,我想用我的项目重新分发QtCore4.dll和QtGui4.dll文件,但不在我的同一目录中.exe(在其他一些相对路径中).
如何让我.exe自动找到它们?
我也不想%PATH%在客户的环境中设置或任何其他环境变量.
我有一个类有5个静态公共函数和1个静态私有函数(从一个公共函数调用).该类没有任何成员变量.在我看来,它应该是一个命名空间而不是一个类.但是如何处理私有功能呢?我更喜欢它不被每个命名空间用户访问,但命名空间中没有访问控制.
我有哈希哈希%signal_db.一个典型的元素是:$signal_db{$cycle}{$key}.有10,000个信号和10,000个密钥.
有没有办法优化(按时)这段代码:
foreach my $cycle (sort numerically keys %signal_db) {
foreach my $key (sort keys %{$signal_db{$cycle}}) {
print $signal_db{$cycle}{$key}.$key."\n";
}
}
Run Code Online (Sandbox Code Playgroud)
元素必须以与我的代码相同的顺序打印.
我有一个基类和一个派生类.每个类都有一个.h文件和一个.cpp文件.
我在以下代码中对派生类执行基类对象的dynamic_cast:
h文件:
class Base
{
public:
Base();
virtual ~Base();
};
class Derived : public Base
{
public:
Derived(){};
void foo();
};
class Another
{
public:
Another(){};
void bar(Base* pointerToBaseObject);
};
Run Code Online (Sandbox Code Playgroud)
cpp文件:
Base::Base()
{
//do something....
}
Base::~Base()
{
//do something....
}
void Derived::foo()
{
Another a;
a.bar(this);
}
void Another::bar(Base* pointerToBaseObject)
{
dynamic_cast<Derived*>(pointerToBaseObject)
}
Run Code Online (Sandbox Code Playgroud)
从某些奇怪的原因,转换失败(返回NULL).但是,如果我将Derived类的构造函数的实现从.h移动到.cpp文件,则转换成功.
什么可以导致它?
编译器是Linux-SUSE上的gcc 3.1.顺便说一句,我只在这个平台上看到这种行为,并且相同的代码在Visual Studio中运行良好.
我在2个不同的dll中有2个静态对象:
对象资源(单例)和对象User。析构函数中的对象用户必须访问对象资源。
如何强制对象用户之前不破坏对象资源?
我想开发自己的基于网络的工具,用于在我的Gmail帐户的收件箱中搜索邮件并删除其中一些邮件.
我在编程生涯中一直在做的项目与那个项目有很大不同,所以我的问题是:应该使用哪些语言,工具和库来完成这项任务?
/* user-defined exception class derived from a standard class for exceptions*/
class MyProblem : public std::exception {
public:
...
MyProblem(...) { //special constructor
}
virtual const char* what() const throw() {
//what() function
...
}
};
...
void f() {
...
//create an exception object and throw it
throw MyProblem(...);
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么在()之后有一个"const throw()"?通常,如果有一个throw(),它意味着throw()之前的函数可以抛出异常.但是,为什么抛出这里?
c++ ×5
dll ×2
static ×2
algorithm ×1
boost ×1
c ×1
destructor ×1
dynamic ×1
dynamic-cast ×1
exception ×1
gmail ×1
hash ×1
namespaces ×1
optimization ×1
path ×1
performance ×1
perl ×1
plugins ×1
private ×1
qt ×1
stl ×1
traversal ×1
trim ×1
vim ×1
web-services ×1
windows ×1