小编Yan*_*Zhu的帖子

python argparse:无法识别的参数

当我跑步时parsePlotSens.py -s bw hehe,它说这hehe是一个未被承认的论点.但是,如果我跑parsePlotSens.py hehe -s bw,那没关系.理想情况下,我希望它适用于这两种情况.

有小费吗?以下是我的代码:

if __name__ == '__main__' :

    parser = argparse.ArgumentParser(prog='parsePlotSens');
    parser.add_argument('-s', '--sort', nargs =1, action = 'store', choices = ['mcs', 'bw'], default='mcs', help=sorthelp)
    parser.add_argument('filename', nargs ='+', action = 'store')
    option = parser.parse_args(sys.argv)
Run Code Online (Sandbox Code Playgroud)

python argparse

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

boost :: shared_ptr和std :: shared_ptr共存

我们都知道boost和c ++ 11都支持shared_ptr.有些编译器支持c ++ 11,而有些编译器则不支持.我想编写我的代码,以便当编译器支持c ++ 11 shared_ptr时,它使用std :: shared_ptr; 如果没有,请使用boost :: shared_ptr.最常见/最佳做法是什么?

让我将讨论局限于GCC,而不是特定版本.

c++ boost shared-ptr c++11

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

C++模板:如何在编译时加入非类型约束

假设我有以下模板

template<unsigned char I, unsigned char F>
class FOO
{
   ....
}
Run Code Online (Sandbox Code Playgroud)

事实上,我要求(I> = F).如果有人误用了

FOO<1, 2> a;
Run Code Online (Sandbox Code Playgroud)

我希望提出编译错误.怎么做?

谢谢

c++ templates

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

gentoo系统中的多版本gcc管理

我知道我们总是可以使用 eselect 来更改编译器版本。我的问题是可以将不同的版本绑定到不同的用户。例如,我希望 root 肯定使用稳定版本。同时,我希望我的普通用户使用一些前沿版本。

我期望一些干净的解决方案,而不是使用 eselect 手动切换

谢谢

gcc gentoo

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

记录编译源的时间

我有一个源文件.当我编译代码时,我希望可执行文件在构建时记住.我想知道是否有可能.例如:

 int main(){
    time_t t = ???  // Time when this line is compiled
    //print out value of t in certain format. 
    return t 
 } 
Run Code Online (Sandbox Code Playgroud)

c c++ time compilation

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

模板专业化:我们可以部分实现特殊情况

请参阅以下代码.第一个MyClass <>有两个函数(func1和func2).然后我想在func1中为MyClass做一些特殊的事情,但不是func2.看起来我必须再次为func2键入代码.我想知道是否有办法解决这个问题?谢谢

#include <iostream>

using namespace std;

template <class T>
class MyClass {
public:
    void func1(){
    cout<<"default: func1"<<endl;
     }
    void func2(){
    cout<<"default: func2"<<endl;
     }
private:
    T haha;
};

template <>
class MyClass<double> {
public:
    void func1(){
    cout<<"special: func1"<<endl;
    }
};

int main()
{
    MyClass<int> intclass;
    intclass.func1();
    intclass.func2();

    MyClass<double> doubleclass;
    doubleclass.func1();
    doubleclass.func2();  // error 'class MyClass<double>' has no member named 'func2'
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

如何在emacs中恢复以前的窗口拆分

这是一个令人讨厌的问题很长一段时间,至少对我而言.

假设我以某种方式拆分了窗户.然后我发现很难在小窗口中查看文件,然后我做Cx 1以获得更好的视图.但有什么方法可以恢复我以前的窗口分割?

例如,当使用gdb-many-windows(默认情况下为5个窗口)时,源代码显示在中间.我想在大窗口(单个窗口)中查看然后恢复我原来的分割设置(5个窗口).

希望我能解释清楚.

谢谢

emacs split

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

C++和Haskell中的树遍历

我是Haskell的新手.我试图了解haskell如何处理递归函数调用以及它们的惰性求值.我所做的实验只是在C++和Haskell中构建二进制搜索树,并分别在后序中遍历它们.C++实现是具有辅助堆栈的标准实现.(我只是在访问它时打印出元素).

这是我的haskell代码:

module Main (main) where

import System.Environment (getArgs)
import System.IO
import System.Exit
import Control.Monad(when)
import qualified Data.ByteString as S

main = do
     args <- getArgs
     when (length args < 1) $ do
          putStrLn "Missing input files"
          exitFailure

     content <- readFile (args !! 0)
     --preorderV print $ buildTree content
     mapM_ print $ traverse POST $ buildTree content
     putStrLn "end"


data BSTree a = EmptyTree | Node a (BSTree a) (BSTree a) deriving (Show)
data Mode = IN | POST | …
Run Code Online (Sandbox Code Playgroud)

recursion haskell lazy-evaluation

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

C++模板:重载operator +,而返回类型由输入类型决定

假设我有以下课程

template<unsigned char B, unsigned char F>
class Foo
{
   .....
}
Run Code Online (Sandbox Code Playgroud)

我希望重载运算符+以便如果两个输入都是

Foo<B1, F1> 
Run Code Online (Sandbox Code Playgroud)

Foo<B2, F2>, 
Run Code Online (Sandbox Code Playgroud)

分别,我想返回的值是类型

Foo<max(B1, B2), max(F1, F2)>. 
Run Code Online (Sandbox Code Playgroud)

或类似的东西

Foo<max(B1-F1, B2-F2)+max(F1, F2), max(F1, F2)>. 
Run Code Online (Sandbox Code Playgroud)

有小费吗?

c++ templates operator-overloading

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

一种具有两种结构的数据:功能编程与命令编程

假设在C中,我们有以下结构:

struct MyData {
    char key1[20];
    long key2;
    ...  /* some data */
};
Run Code Online (Sandbox Code Playgroud)

基本上,除了一些数据,我们有两个键:key1和key2.假设我们需要以两种不同的方式管理MyData的一堆对象,例如,基于key1或key2(但不是两者)快速查找相应的对象.满足此要求的一种方法是分别根据这两个密钥构建两个不同的RB树(或散列表).在C/C++中,数据不需要重复,因为我们只需要记录对象的指针.

在上面的假设示例中,关键点在于我们有一堆相同类型的数据,我们可以通过两种不同的数据结构组织它,而不用命令式语言复制数据.我想知道纯函数式编程如何在不重复数据的情况下有效地满足这一要求.为了使其更具普遍性或挑战性,两种数据结构可能不是同一类型.例如,一个可以是rb-tree而另一个可以是hash-table.

如果可能,请在Haskell中布局您的解决方案.

PS:作为函数式编程的新手,我不禁想知道如何在纯函数式编程中从命令式编程中获得一些技巧.我知道有时根本没有意义.如果有人觉得这个问题也没有意义,请详细说明.

谢谢

haskell functional-programming data-structures

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