小编Exa*_*gon的帖子

什么是每行读取线路的最快方式

我有一个巨大的文件与字符串.所有行都应该添加到我的代码中的List中.什么是最快的方式?我发现了这个,但我不知道如何使用它来读取每行的行数.

java io performance list

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

使用boost spirit x3在单独的解析器中链接错误

我是currentyl试图将我的提升精神x3解析器分成不同的_def和.cpp文件使用BOOST_SPIRIT_DEFINE/DECLARE/INSTANTIATE,但我不断收到链接错误. 这里是我的解析器分离.

链接器错误读取

<artificial>:(.text.startup+0xbb): undefined reference to `bool kyle::parser::impl::parse_rule<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag> const, boost::spirit::x3::unused_type>, boost::spirit::x3::unused_type const>(boost::spirit::x3::rule<kyle::parser::impl::identifier_class, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false>, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::spirit::x3::context<boost::spirit::x3::skipper_tag, boost::spirit::x3::char_class<boost::spirit::char_encoding::standard, boost::spirit::x3::space_tag> const, boost::spirit::x3::unused_type> const&, boost::spirit::x3::unused_type const&)'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎样才能让我的例子有效?

  • config.hpp:

    #include <boost/spirit/home/x3.hpp>
    
    namespace kyle{
    namespace parser{
    
    namespace x3 = boost::spirit::x3;
    
    typedef std::string::const_iterator iterator_type;
    typedef x3::phrase_parse_context<x3::ascii::space_type>::type context_type;
    
    }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • literals.cpp:

    #include "literals_def.hpp"
    #include "config.hpp"
    #include <boost/spirit/home/x3.hpp>
    
    
    namespace kyle { …
    Run Code Online (Sandbox Code Playgroud)

c++ linker-errors boost-spirit boost-spirit-x3

3
推荐指数
2
解决办法
523
查看次数

将野牛输出生成到不同的文件夹中

我目前在我的项目中使用 bison 和 flex,它具有以下结构:

Project
|
|--include/
|--src/
Run Code Online (Sandbox Code Playgroud)

所有的头文件都进入include目录,所有的源文件进入src目录。我的语法和 flexer 语法在 include 目录中,我希望生成的头文件也在include目录中,但生成的源文件在src目录中。我有野牛的选择或其他东西来实现这一目标吗?

c++ bison flex-lexer

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

制作一元运算符二进制

我想重载operator~但不是作为一元运算符,而是作为二元运算符,所以我可以这样想a~b.有没有办法在c ++中这样做?

c++ operator-overloading bitwise-operators c++11

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

使用boost精神x3解析为具有布尔或枚举成员的结构

如果我有一个结构:

struct person{
    bool is_male;
    std::string name;
    std::vector<std::string> friends;
}
Run Code Online (Sandbox Code Playgroud)

要么

enum class gender_t{male, female}
struct person{
        gender_t gender;
        std::string name;
        std::vector<std::string> friends;
}
Run Code Online (Sandbox Code Playgroud)

如何使用boost.spirit X3解析此结构?规则如何解析“ alice male bob”之类的字符串,解析器将返回一个名称为alice的对象,该对象是male,并且有一个朋友bob。如果这个人不是女性,那么如果性别只是露骨的话,会是什么样?

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

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

只从类中继承一次

我有一个class A,我需要一个A的子类class B: public A.我怎样才能实现我可以继承这个类,但是没有其他人可以再从这两个类继承?如果我做class A最终B不能继承A.

c++ inheritance c++11

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

我什么时候可以使用期望运算符?

我正在使用boost spirit x3进行解析.我完成了语法,解析器按预期解析.现在我想添加错误处理,所以我必须为我的语法添加期望点.我的问题是我何时可以使用期望运算符>而不是"跟随"运算符>>?我只能用它像a > b如果a >> b在语法的另一部分永远不会发生?

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

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

通过指针将堆栈分配的对象传递给在另一个线程上执行的函数

据我所知,线程共享堆内存但有自己的堆栈.因此,如果我通过指针(出于多态的原因)将堆栈分配的对象传递给在另一个线程上执行的函数,这将是安全的,还是会得到未定义的行为.例如这段代码:

struct Foo{
    int counter{0};
}

void bar(Foo * obj){
    obj->counter++;
}
int main(){
   {
        Foo foo_object;
        std::thread t(bar, &foo_object);
        t.detach();
    }
    //do more stuff
}
Run Code Online (Sandbox Code Playgroud)

这是不安全的,因为在foo_object超出范围后,指针foo_object将无效,但线程可以访问无效的内存?我有强烈的感觉,这是产生不确定的行为,但我不是100%肯定.

c++ multithreading c++11

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

为什么我们使用::访问枚举值

我的问题很简单,也许很愚蠢.::当我们通过访问struct和class成员时,通过C++ 访问枚举成员背后的设计决策是什么.

c++ enums language-design

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

JVM如何知道何时引发NullPointerException

Java虚拟机如何知道何时引发NullPointerException?它会在我对某个对象调用的每个方法之前检查是否该对象为null,以检查是否必须抛出NullPointerException吗?如果是这样,这真的慢吗?

java compiler-construction jvm nullpointerexception

0
推荐指数
1
解决办法
570
查看次数