小编Igo*_*Oks的帖子

修剪功能的性能

我的旧修剪功能:

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,这是相当古老的,但我想这段代码从那以后没有太大变化.

谢谢.

c++ performance boost stl trim

7
推荐指数
1
解决办法
896
查看次数

寻找算法(二维二分搜索的版本)

容易出问题和已知算法:

我有一个拥有100名成员的大阵容.前X个成员为0,其余为1.查找X.

我通过二分搜索来解决它:检查成员50,如果它是0 - 检查成员75等,直到我找到相邻的0和1.

我正在寻找一个针对二维相同问题的优化算法:

我有二维数组100*100.在0-X行和0-Y列上的那些成员是0,其余的是1.如何找到Y和X?

algorithm binary-search

7
推荐指数
3
解决办法
2870
查看次数

我喜欢c.vim插件,但我不使用K&R代码风格

当我编写代码时,我想使用ANSI C样式,但c.vim模板中的代码样式是K&R.

我在哪里可以获得另一个模板或任何其他插件而不是c.vim

c vim plugins

7
推荐指数
1
解决办法
1393
查看次数

如何在发布Qt项目时为Qt dll设置相对路径?

当我发布我的Qt项目时,我想用我的项目重新分发QtCore4.dllQtGui4.dll文件,但不在我的同一目录中.exe(在其他一些相对路径中).

如何让我.exe自动找到它们?

我也不想%PATH%在客户的环境中设置或任何其他环境变量.

windows dll qt path dynamic

7
推荐指数
1
解决办法
3158
查看次数

在C++中将静态类转换为命名空间时如何处理私有成员函数?

我有一个类有5个静态公共函数和1个静态私有函数(从一个公共函数调用).该类没有任何成员变量.在我看来,它应该是一个命名空间而不是一个类.但是如何处理私有功能呢?我更喜欢它不被每个命名空间用户访问,但命名空间中没有访问控制.

c++ static namespaces private

6
推荐指数
2
解决办法
583
查看次数

如何优化Perl中的二维哈希遍历?

我有哈希哈希%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)

元素必须以与我的代码相同的顺序打印.

optimization perl hash traversal multidimensional-array

6
推荐指数
1
解决办法
1866
查看次数

dynamic_cast失败

我有一个基类和一个派生类.每个类都有一个.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中运行良好.

c++ dynamic-cast

5
推荐指数
2
解决办法
1万
查看次数

如何在不同的dll中强制破坏静态对象?

我在2个不同的dll中有2个静态对象:

对象资源(单例)和对象User。析构函数中的对象用户必须访问对象资源。

如何强制对象用户之前不破坏对象资源?

c++ dll static destructor

5
推荐指数
1
解决办法
2314
查看次数

我应该使用哪些语言和库来使用Gmail?

我想开发自己的基于网络的工具,用于在我的Gmail帐户的收件箱中搜索邮件并删除其中一些邮件.

我在编程生涯中一直在做的项目与那个项目有很大不同,所以我的问题是:应该使用哪些语言,工具和库来完成这项任务?

gmail programming-languages web-services web-applications

5
推荐指数
2
解决办法
430
查看次数

与导出标准异常类相关的问题

/* 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++ exception

4
推荐指数
1
解决办法
339
查看次数