小编DJM*_*hem的帖子

qt中的java等效面板

我想知道QT中的Java面板等价物.我的意思是我们需要在QT中使用哪个类,即qframeqwidget.我需要在QT主窗口添加许多面板.

qt panel

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

Xcode为c ++中的显式死代码提供了奇怪的解决方案?

我正在编写一个程序来解决类似sudoko的难题Hashiwokakero。我有一些看起来像这样的代码:

if (bridgesLeft[row][col] == 1)
{
   doSomething();
}
else if (bridgesLeft[row][col] == 2)
{
   doSomethingElse();
}
else if (bridgesLeft[row][col] == 3)
{
   doAnotherThing();
}
...
Run Code Online (Sandbox Code Playgroud)

我意识到我在doSomethingElse()函数中放了一个错误,因此我没有删除该块,而是添加else if (bridgesLeft[row][col] == 2 && false)了保证该错误功能不会运行的信息,只是要确保那是我的错误来源。Xcode给我警告,说我的doSomethingElse()代码永远不会运行。它还给了我这个选择:

fix-it: Silence by adding parentheses to mark code as explicitly dead.
Run Code Online (Sandbox Code Playgroud)

单击此按钮会更改

else if (bridgesLeft[row][col] == 2 && false)
Run Code Online (Sandbox Code Playgroud)

else if (bridgesLeft[row][col] == /* DISABLES CODE */ (2) && false)
Run Code Online (Sandbox Code Playgroud)

如何将括号内的“ 2”标记为明显已死?这是什么意思?如果我保留括号,但取出&& false一部分,代码块仍会执行,因此实际上并没有使代码失效。

c++ xcode dead-code compiler-warnings

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

检测迭代器是否是std :: map的最后一个元素

这与此问题类似,但不重复.我正在尝试遍历地图并打印每个元素的值,但最后一个元素的输出略有不同.在那个问题上,他们建议使用map.rbegin().base(),但它不适合我.

这是我的代码:

#include <iostream>
#include <map>

int main()
{
    std::map <char, int> charMap = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4} };
    for (auto iter = charMap.begin(); iter != charMap.end(); iter++)
    {
        std::cout << iter->first << ":\t" << iter->second;
        if (iter == charMap.rbegin().base())
            std::cout << "\t//This is the last element.\n";
        else
            std::cout << "\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望我的输出看起来像这样:

a:    1
b:    2
c:    3
d:    4    //This is the last element. 
Run Code Online (Sandbox Code Playgroud)

但相反,我得到这个输出:

a:    1
b: …
Run Code Online (Sandbox Code Playgroud)

c++ dictionary iterator std

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

什么是有条件地返回函数的最pythonic方式

说我有2个功能.我希望func2返回func1 UNLESS func1返回None,在这种情况下func2返回其他内容.我有两种方法可以做到这一点,但他们都觉得有点不对劲.

我可以说:

def func1(n):
    if (condition):
        return foo

def func2(n):
    if func1(n) is not None:
        return func1(n)
    else:
        return something_else
Run Code Online (Sandbox Code Playgroud)

但这感觉不对,因为我必须两次调用func1(n)(并且func1(n)是一个更大的计算).为了解决这个问题,我可以说:

def func1(n):
    if (condition):
        return foo

def func2(n):
    foo = func1(n)
    if foo is not None:
        return foo
    else:
        return something_else
Run Code Online (Sandbox Code Playgroud)

但这感觉不对,因为我认为我不应该分配一个永远不会再次使用的新变量,只是为了检查func1是否返回None.

有没有更简单的方法来执行此操作,我不必再调用func1两次,而且我不必创建新变量?如果这唯一的方法,你会推荐哪两个?我目前使用第二种方式(我将foo设置为func1返回的位置,而不是返回foo,除非foo == None)

另外,请记住,在我的实际代码中,我调用了几个不同的函数,我想返回第一个不是None的函数,这只是一个更简单的代码版本,可以解决问题.

python return function conditional-statements

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

在python中使用多个条件对列表进行排序

目前我正在尝试对由版本号组成的文件列表进行排序.例如:

0.0.0.0.py
1.0.0.0.py
1.1.0.0.py
Run Code Online (Sandbox Code Playgroud)

它们都存储在列表中.我的想法是sort将列表的方法与lambda表达式结合使用.lambda表达式应首先删除.py扩展,然后用点分割字符串.比将每个数字转换为整数并按它们排序.

我知道如何在c#中执行此操作,但我不知道如何使用python执行此操作.一个问题是,如何对多个标准进行排序?以及如何嵌入lambda表达式呢?

谁能帮我?

非常感谢你!

python sorting lambda list

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

为什么这个用"Is"编译但不用"IsNot"编译?

我正在攻击一些旧的VB代码,如果发现异常,我想要一个函数提前返回,但是如果它是一个System.UnauthorizedAccessException函数应该继续.所以我没有得到XY'ed,我知道这是一个奇怪的要求,但我正在用C#重写代码,我只需要查看结果.我知道可能有更好的方法.这是原始代码:

Try
    doSomeStuffWithFiles(files)
Catch ex As Exception
    MsgBox("Far Field: error in reading / writing to far field file." & Chr(13) & ex.Message)
    Exit Sub
End Try
Run Code Online (Sandbox Code Playgroud)

所以我添加了几行:

Catch ex As Exception
    MsgBox("Far Field: error in reading / writing to far field file." & Chr(13) & ex.Message)
    If TypeOf ex IsNot System.UnauthorizedAccessException Then
        Exit Sub
    End If
End Try
Run Code Online (Sandbox Code Playgroud)

现在,我不是VB的专家,但据我所知,这是完全有效的VB.它还与MSDNTypeOf上的示例代码完全匹配.但是,此代码无法编译.我收到此错误:

Error   21  'Is' expected.  C:\FilePath 3114    26  Project
Error   22  'UnauthorizedAccessException' is a type …
Run Code Online (Sandbox Code Playgroud)

vb.net

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

重写__cmp__ python函数

嗨,我压倒一切__cmp__.如果传递的第二个对象是None,或者它不是实例someClass,则返回-1.

我不明白这里到底发生了什么.

class someClass():
    def __cmp__(self, obj):
        if obj == None:
            return -1
        if not isinstance(obj, someClass):
            return -1  
Run Code Online (Sandbox Code Playgroud)

我的测试功能:

def test_function(self):  
        obj1 = someClass()
        self.assertTrue(obj1 < None)
        # I get true.
        self.assertTrue(obj1 > None)
        # I get failure as False is returned.
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下:

  • 什么是回报值?
  • 它是如何决定是否会返回TrueFalse何时更改比较标志?

python

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

在Gvim 8中,光标不会到达窗口的顶部或底部

刚重新成像的工作机器(现在用win 10)并重新加载Vim,现在是Gvim 8.只是注意到这种奇怪的行为,其中光标不会到达页面的顶部或底部.它只会从顶部或底部开始接近6行(除非在文件的顶部或底部).似乎与滚动无关,但更像是页面顶部和底部的边距.除此之外,一切正常,但是当我做H或L时,我想一直走到顶部或底部,而不是6行.

另外,关于defaults.vim,它不会出现在我以前的安装中,但现在是.但是,doc说如果没有.vimrc找到它就会被使用,但我有一个.vimrc.

vim scroll

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

在Visual Studio 2013中,Boost Python类导出无法使用链接错误进行编译

我自己编译了Boost并用它将以下函数导出到DLL:

#include <boost/python.hpp>
using namespace boost::python;

std::string greet()
{
    return "hello, dude !!";
}

BOOST_PYTHON_MODULE(hello)
{
    def("greet", greet);
}
Run Code Online (Sandbox Code Playgroud)

在我将hello.dll文件重命名为hello.pyd后,这在Python中加载正常.

现在我正在尝试这个:

#include <boost/python.hpp>
using namespace boost::python;

struct World
{
    void set(std::string msg) { this->msg = msg; }
    std::string greet() { return msg; }
    std::string msg;
};


BOOST_PYTHON_MODULE(hello)
{
    class_<World>("World")
        .def("greet", &World::greet)
        .def("set", &World::set);
}
Run Code Online (Sandbox Code Playgroud)

它出错了:

Error   29  error LNK2019: unresolved external symbol "__declspec(dllimport) void * __cdecl boost::python::objects::find_static_type(void *,struct boost::python::type_info,struct boost::python::type_info)" (__imp_?find_static_type@objects@python@boost@@YAPAXPAXUtype_info@23@1@Z) referenced in function "private: virtual void * __thiscall boost::python::objects::value_holder<struct …
Run Code Online (Sandbox Code Playgroud)

c++ python boost boost-python

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

如何使用子匹配值在Vim中搜索和替换

我的HTML看起来像这样

<form>
  <input id="firstname" value=""/>
  <input id="lastname" value=""/>
  <input id="email" value=""/>
</form>
Run Code Online (Sandbox Code Playgroud)

我想在每个输入字段中添加name ="{id-name}"(参见下面的示例代码)

<form>
  <input id="firstname" name="firstname" value=""/>
  <input id="lastname" name="lastname" value=""/>
  <input id="email" name="email" value=""/>
</form>
Run Code Online (Sandbox Code Playgroud)

我怎么能用Vim做到这一点?

我在尝试

%s/id=".*"/\=submatch(0)/g
Run Code Online (Sandbox Code Playgroud)

这导致了两个问题:

1)搜索,从第一个报价搜索到最后一个报价.它应该从第一个引号搜索到下一个引用.

在此输入图像描述

2.)submatch(0)正在取得搜索的全部结果.我怎样才能将它隔离到只有两者之间的值id="{value}"

我经常遇到这个问题,弄清楚这个vim命令可以帮助我节省很多时间.主要是将搜索结果拆分为submatch()我还看到人们在堆栈上使用\1 \2而不是submatch()存储结果,这种方法更好吗?

任何帮助将不胜感激!谢谢!

linux vi vim terminal

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