小编adu*_*ric的帖子

如果未找到搜索结果,则返回"NULL"对象

我对C++很陌生,所以在我学习的时候,我倾向于设计很多Java主义.无论如何,在Java中,如果我的类具有"搜索"方法,该方法T将从Collection< T >匹配特定参数的对象返回一个对象,我将返回该对象,如果在集合中找不到该对象,我将返回null.然后在我的调用函数中,我会检查if(tResult != null) { ... }

在C++中,我发现null如果对象不存在,我就无法返回值.我只想返回一个类型为T的'指示符',它通知调用函数没有找到任何对象.我不想抛出异常,因为它并不是一个特例.

这就是我的代码现在的样子:

class Node {
    Attr& getAttribute(const string& attribute_name) const {
       //search collection
       //if found at i
            return attributes[i];
       //if not found
            return NULL; // what should this be?
    }

private:
    vector<Attr> attributes;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变它以便我能给出那种标记?

c++ return-value sentinel

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

在Maven中调试?

是否可以从Maven启动调试器,如jdb?我有一个pom.xml文件,可以成功编译项目.但是,程序挂起了某个地方,我真的想启动jdb或等效的调试器来查看发生了什么.

我编译使用mvn compile并启动使用:

mvn exec:java -Dexec.mainClass="com.mycompany.app.App"
Run Code Online (Sandbox Code Playgroud)

我期待的是:

mvn exec:jdb -Dexec.mainClass="com.mycompany.app.App"
Run Code Online (Sandbox Code Playgroud)

启动调试器,但像往常一样,我的期望与maven的理念不一致.

另外,我找不到任何文档(在Maven的网站或谷歌上)来描述调试的工作原理.我怀疑我必须使用一些插件.

java debugging maven-2

62
推荐指数
6
解决办法
14万
查看次数

Numpy.array索引问题

我试图通过指定某些标准来创建numpy.array的"掩码".Python甚至有这样的语法很好的语法:

>> A = numpy.array([1,2,3,4,5])
>> A > 3
array([False, False, False, True, True])
Run Code Online (Sandbox Code Playgroud)

但如果我有一个标准列表而不是范围:

>> A = numpy.array([1,2,3,4,5])
>> crit = [1,3,5]
Run Code Online (Sandbox Code Playgroud)

我不能这样做:

>> A in crit
Run Code Online (Sandbox Code Playgroud)

我必须根据列表推导做一些事情,比如:

>> [a in crit for a in A]
array([True, False, True, False, True])
Run Code Online (Sandbox Code Playgroud)

哪个是对的.

现在,问题是我正在使用大型数组,上面的代码非常慢.是否有一种更自然的方式来执行此操作可能会加快速度?

编辑:我通过将暴击变成一组来获得一个小的加速.

EDIT2:对于那些感兴趣的人:

Jouni的方法: 1000循环,最佳3:每循环102μs

numpy.in1d: 1000次循环,最佳3:1.33 ms每循环

编辑3:刚刚再次测试B = randint(10,尺寸= 100)

Jouni的方法: 1000循环,最佳3:2.96毫秒每循环

numpy.in1d: 1000次循环,最佳3:1.34 ms每循环

结论:使用numpy.in1d()除非B非常小.

python arrays numpy

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

Emacs是否可以运行位于远程服务器上的Matlab shell?

我希望能够使用Matlab-mode(matlab.el)来运行matlab shell.唯一的问题是,Matlab位于远程主机上.这甚至可能吗?如果是,请解释.我现在正在玩流浪汉,但无济于事.

谢谢.

emacs matlab

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

如何在matlab中创建一个字符串数组?

我想将一个字符串向量从C++传递给matlab.我已经尝试使用可用的函数,如mxCreateCharMatrixFromStrings,但它没有给我正确的行为.

所以,我有这样的事情:

void mexFunction(
    int nlhs, mxArray *plhs[],
    int nrhs, const mxArray *prhs[])
{
   vector<string> stringVector;
   stringVector.push_back("string 1");
   stringVector.push_back("string 2");
   //etc...
Run Code Online (Sandbox Code Playgroud)

问题是我如何将这个向量带到matlab环境中?

   plhs[0] = ???
Run Code Online (Sandbox Code Playgroud)

我的目标是能够运行:

>> [strings] = MyFunc(...)
>> strings(1) = 'string 1'
Run Code Online (Sandbox Code Playgroud)

c++ matlab mex

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

标签 统计

c++ ×2

matlab ×2

arrays ×1

debugging ×1

emacs ×1

java ×1

maven-2 ×1

mex ×1

numpy ×1

python ×1

return-value ×1

sentinel ×1