小编seh*_*ehe的帖子

C++条件运算符性能

我有条件声明expensive_foo(),在99.9%的情况下是假的.我有一个条件陈述bar,在约50%的情况下都是如此.

如果两个陈述都是真的,我想要采取一些行动.所以我几乎肯定知道这expensive_foo()是假的,我想检查它是否bar属实.

下面的代码是否会检查expensive_foo()是否bar属实?或者expensive_foo()每次都会检查?

if ( bar && expensive_foo() )
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者我需要制作这样的结构:

if ( bar )
{
    if ( expensive_foo() )
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ performance conditional conditional-statements

3
推荐指数
1
解决办法
1294
查看次数

使用Boost unordered_map

我希望boost::unordered_map在没有下载整个Boost包的情况下包含在我的项目中.我怎样才能做到这一点?

c++ boost unordered-map

3
推荐指数
1
解决办法
622
查看次数

GIT取消回滚提交

我做了一个提交并推动我的git repo.

然后我需要回滚我这样做的提交:

git reset --hard b1b5768c9687455f01bab242ff177a5ee403104f
Run Code Online (Sandbox Code Playgroud)

是否有可能找到第一次提交的SHA?然后再回到它?

git

3
推荐指数
1
解决办法
59
查看次数

string.find("")找不到空格

我正在尝试在用户输入的字符串中查找空间.我想用find()from std::string来返回空间的位置.

如果输入是"Seattle,WA USA",我想要find(" ", 0)返回8,我该怎么做?第8个是","之后的空格

string inputString = " ";
cout << "Enter String to modify" << endl;
cin >> inputString;
int spac = inputString.find(" " , 0);
Run Code Online (Sandbox Code Playgroud)

但是find()继续回来0.我不知道为什么.

c++ string

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

新标准的功能是否会对C++ 11中的boost库实现产生重大影响?

新标准的功能是否会对C++ 11中boost库实现产生重大影响?

鉴于存在可变参数模板,特别感兴趣的是boost::variant(BOOST_VARIANT_LIMIT_TYPES)和boost::spirit部分库.

有关于此的好文章吗?

c++ boost boost-spirit boost-variant c++11

3
推荐指数
1
解决办法
590
查看次数

cds库:michael_deque在推回派生类型的自定义类型时导致崩溃(仅在发布模式下)

我正在使用带有默认优化设置(/ O2)的VS2012,此问题仅存在于发布模式中.

我有一些代码使用michael_deque(使用标准GC)和指向(抽象)类型的指针T.
当我尝试将指针推回到派生自的类型时,T应用程序在退出push_back()函数时崩溃michael_deque.

问题似乎完全取决于这种特定类型T,因为编写一个虚拟类foo,在类中派生它bar(并在构造函数中打印一些东西以避免它被优化掉),然后再推回到new bar()michael_deque不会导致崩溃.

T有问题的课程是这样的:

class Task
{
public:
    Task() : started(false), unfinishedTasks(1), taskID(++taskIDCounter) {};
    Task(unsigned int parentID_) : started(false), unfinishedTasks(1), taskID(++taskIDCounter), parentID(parentID_)/*, taken(0)*/ {};
    virtual ~Task() = 0 {};

    virtual void execute() final
    {
        this->doActualWork();
        unfinishedTasks--;
    }

    virtual void doActualWork() = 0;
public:
    unsigned int taskID;    //ID of this task
    unsigned int parentID;  //ID of the parent of …
Run Code Online (Sandbox Code Playgroud)

c++ libcds

3
推荐指数
1
解决办法
319
查看次数

如何获取boost json以使用正确的数据类型

当我put_value使用int时,它会以字符串形式写入。有人知道如何将其打印为int吗?

#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

using boost::property_tree::ptree;
using namespace std;

int main(int argc, char* argv[]) {

    ptree node;
    node.put("string", "text here");
    node.put("int", 1);//outputs as "1" and should be 1
    write_json(cout, node, false);//{"string":"text here","int":"1"}

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ json boost boost-propertytree

3
推荐指数
1
解决办法
1955
查看次数

C ++ boost :: posix_time :: ptime默认值

我班上有一个成员变量:

class Foo
{
// ...
private:
  boost::posix_time::ptime t;
}
Run Code Online (Sandbox Code Playgroud)

我想在构造函数中将其初始化为一个众所周知的值,这样我就知道程序尚未设置它:

Foo::Foo()
   : t(NULL) // doesnt work
{}
Run Code Online (Sandbox Code Playgroud)

但是将其设置为NULL无效,因为它不是指针。

如何初始化boost::posix_time::ptime为众所周知的值?

c++ boost boost-date-time

3
推荐指数
1
解决办法
2169
查看次数

解释Apache SOLR boost函数

我试图在 APACHE SOLR 中实现一个逻辑,以便根据天数或月数的差异,超过 2 年的文档应该受到惩罚。

我正在使用这个增强功能,这是我在谷歌上搜索了很多之后得到的。

 recip(ms(NOW,publicationDate),3.16e-11,1,1) // Currently it is set to use 1 year
Run Code Online (Sandbox Code Playgroud)

任何人都可以确认这是惩罚旧文件还是什么?

谢谢

boost solr-boost

3
推荐指数
1
解决办法
751
查看次数

Boost精灵x3解析器不适用于多个属性

Spirit X3解析器函数使用1 attribut可以很好地工作.当我尝试使用多个属性编译文档中的代码时,它不起作用.

#include <boost/spirit/home/x3.hpp>
#include <iostream>
using namespace std;
using namespace boost::spirit;

string a = "3.2 4.5";
auto begin = a.begin();
auto end = a.end();
double d1 = 0.0, d2 = 0.0;
x3::phrase_parse(begin, end ,
                 x3::double_ >> x3::double_,
                 x3::space,
                 d1, d2);  // doesn't work. Accept only 1 attribut
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

/home/sacha/Dev/vql/vqlcompiler.cpp:20: erreur : no matching function for call to ‘phrase_parse(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >&, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >&, boost::spirit::x3::sequence<boost::spirit::x3::real_parser<double>, boost::spirit::x3::real_parser<double> >, const space_type&, double&, double&)’
                      x3::double_ >> x3::double_, x3::space, d1, d2); …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-spirit c++14 boost-spirit-x3

3
推荐指数
1
解决办法
180
查看次数