小编Joh*_*n P的帖子

在Java中,{a,b,c,...}数组的简写何时不合适,为什么?

如果您正在定义变量,则声明/定义变量似乎完全有效,如下所示:

    double[][] output = {{0,0},{1,0}};
Run Code Online (Sandbox Code Playgroud)

但是,如果您返回一个值,则编写以下内容似乎无效:

    public double[] foo(){
      return {0,1,2}
    }
Run Code Online (Sandbox Code Playgroud)

我本以为在内部,这两个都会执行相同的操作.Eclipse至少不同意.有谁知道差异是什么,在哪里可以看到,或者为什么接受前一个例子并拒绝后者是有益的?

编辑:好的,所以它适合你初始化时,但我没有看到任何歧义...... JVM不能解释变量名称中的变量类型(在重新定义已经初始化的变量的情况下)或者在返回时(JVM只能查看函数的返回类型)?什么使初始化成为禁止隐式类型的规则的特例?是什么使一般规则需要显式类型?

java arrays notation

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

你可以搜索或过滤Vim完成吗?

我正在使用带有Python3的Vim 8.0和用于C/C++完成的myint/ClangComplete.SDL_<tab>建议SDL的每个功能和类型.有没有办法限制SDL_EventType类型的建议,返回SDL_Windows的函数等?BidiComplete似乎是一个良好的开端,因为SDL_<tab>EVENT将匹配SDL_WINDOWEVENTSDL_FIRSTEVENT,而不是SDL_FINGERDOWN等我非常希望能够通过任何过滤/所有ClangComplete弹出菜单中的字段,因为我可能会感兴趣的"函数将SDL_Window*作为参数或返回一个'.过滤/搜索机制只能是PUM中每行的整个文本的正则表达式.

c++ regex vim code-completion clang-complete

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

在std::ssize中,为什么返回decltype(c.size())和ptrdiff_t的common_type?

我想要一个对应于的有符号类型std::size(理想情况下是根据它计算出来的,而不是依赖于另一个可能独立的定义。)自然地,我想到使用std::make_signed_t<std::size_t>.

然而,当我查看时std::ssize,我注意到返回类型是std::common_type_tand std::ptrdiff_tdecltype(c.size())现在c.size()应该是未签名的,但无论哪种情况,它都应该被签名,因为std::ptrdiff_t它是。剩下的就是尺寸了;那应该是两种类型中较大的一个。

我不明白的是为什么你会使用一个大的类型,就像std::ptrdiff_t你想要最大的有符号类型一样。如果它真的是最大的,那就没有意义了std::common_type_t。相反,假设std::common_type_t并不总是返回std::ptrdiff_t,这意味着decltype(c.size())是不​​同的大小,并且有效地std::ptrdiff_t用于最小大小的有符号类型。如果是这样的话,难道不应该使用最小的有符号类型吗?decltype(c.size())或者说,为什么不直接使用对应的有符号类型呢?该定义背后的意图是什么?

c++ size signed types c++17

7
推荐指数
0
解决办法
230
查看次数

Python如何在对象之间建立相等?

我在我的程序中找到了一个错误,我正在测试一个对象列表中是否存在对象.该行始终返回False,这意味着该对象不在列表中.事实上,它一直在发生,即使我做了以下事情:

class myObject(object):
    __slots__=('mySlot')
    def __init__(self,myArgument):
        self.mySlot=myArgument
print(myObject(0)==myObject(0))        # prints False
a=0
print(myObject(a)==myObject(a))        # prints False
a=myObject(a)
print(a==a)                            # prints True
Run Code Online (Sandbox Code Playgroud)

我之前使用过deepcopy,但是我对Python的经验不足以了解它何时是不必要的,或者机械上有什么区别.我也听说过酸洗,但从未使用过它.有人可以向我解释这里发生了什么吗?

哦,还有一件事.这条线

if x in myIterable:
Run Code Online (Sandbox Code Playgroud)

可能测试x和myIterable中每个元素之间的相等性,对吧?所以,如果我可以改变两个对象之间的感知平等,我可以修改该行的输出吗?是否内置了该内容和所有其他内联运算符?

python equality copy object deep-copy

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

对 CreateCompatibleDC、BitBlt 等的未定义引用?

我已经链接到 gdi32.lib。无奈之下,我还链接了两个不同版本的gdi32.lib以及gdiplus.lib,并包含了我能找到的所有gdi头文件,但无济于事。然而,这个问题是在额外链接之前开始的,所以我想我可以放心地假设我的问题不是库之间的冲突或任何类似的干扰。

包含/定义:

#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <process.h>
#include <windows.h>
#include <winuser.h>
#include <gdiplus.h>
#include "UVMap.h"
Run Code Online (Sandbox Code Playgroud)

相关代码:

case WM_PAINT:{
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwnd, &ps);
        HDC hdcMemory = CreateCompatibleDC(hdc);
        BITMAP bmp = screen.getBitmap(hdcMemory);
        BitBlt(hdc,0,0,w,h,hdcMemory,0,0,SRCCOPY);
        EndPaint(hwnd,&ps);
        DeleteDC(hdc);
    }break;
Run Code Online (Sandbox Code Playgroud)

我在搜索此问题时发现的每个结果都声称您只需链接到 gdi32。以下是我添加的链接:

  • C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\Gdi32.Lib
  • C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\Gdi32.Lib
  • C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\GdiPlus.lib

编辑:错误显示如下:

.../Testing.cpp:50: undefined reference to `CreateCompatibleDC@4'
.../Testing.cpp:52: undefined reference to `BitBlt@36'
Run Code Online (Sandbox Code Playgroud)

像那样?我在 Eclipse 中通过“项目”>“属性”>“路径变量”进行了链接。“链接资源”选项卡下没有任何条目,也无法编辑。

c++ reference undefined

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

Bogosort的平均时间复杂度是多少?

我听说Bogosort的行为没有上限。但是,我从未听说过有人谈论它的平均行为。这是一个愚蠢的任务,但是不切实际的思想实验仍然可以作为一种良好的实践,尽管它们可能不切实际。

我想说的每个术语是:

P(x==y)*P(x!=y)^(k-1)
    = 1/n * (1-1/n)^(k-1)
    = (n-1)^(k-1) / n^k
Run Code Online (Sandbox Code Playgroud)

其中k为0或更大。我知道该级数是收敛的,因此我们可以找到一个复杂度的有限对有限关系(与最坏情况下的行为不同,其他人出于沮丧而试图将其写为O(infinity)试图将约束置于a无限功能。)

谁能解决这个问题?还是没有无限和就无法书写或近似的复杂性?

sorting complexity-theory time-complexity

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

在 bash 中将变量默认值设置为空的目的是什么?

一般来说,此语法用于保证一个值,可能是默认参数。

(来自 Bash 参考手册)

${参数:-word}

如果参数未设置或为 null,则替换单词的扩展。否则,将替换参数的值。

如果仅在变量为空时才选择替换,那么将变量默认为空的目的是什么?

作为参考,我正在查看 /lib/lsb/init-functions。

bash default-value

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

在采用Object参数的Java方法中,如何访问仅存在于特定类实例的字段?

- 是的,这是一个问题,需要帮助解决作为家庭作业的事情.不,这不是我要求你为我做功课.半个小时前的截止日期; 我确实无法改变我的提交.你只需要相信我的话.继续...

我知道测试对象类型应该是不必要的.当我在寻找有关'instanceof'的详细信息时,我找到了六个线程,人们只回应告诉原始的海报,如果他们必须进行测试以找出他们在处理之前处理的是什么类型的对象,他们就会犯错它.是的,我知道,我很乐意遵循这些惯例.不幸的是,我的教授要求我们覆盖我们定义的类的equals方法,特别是需要一个Object类型参数.如果你看到我的代码,你可能会更好地理解:

public boolean equals(Course other){
    if(!(other instanceof Course)){
        return false;
    } else if(other.name==this.name && other.days==this.days && 
        other.start==this.start && other.end==this.end){
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

你可以理解我要去哪里.'other'参数应该是Object类型,但如果我将它保留为Object并使用名称/ days/start/end字段,则该程序是合适的.如果我把它改成课程,当然它可以工作(没有双关语),但这将是一个完全不同的方法.所需的行为是除了Course实例之外的所有对象使该方法返回false,此外,对于Course实例之间的不匹配数据,使其返回false.

对于那些了解Java的人来说,通过看到这样的问题感到沮丧,我感到很遗憾.

java field object

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

为什么MonitorFromWindow丢失/未声明?(C++/WINAPI)

我正在尝试使用Windows API,但我遇到了很多问题.最新的是:我包括Windows.h,暂时包含Winuser.h,但是MonitorFromWindow(以及相关字段,如MONITOR_DEFAULTTONEAREST)丢失了.特别,

...'MONITOR_DEFAULTTONEAREST' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

...'MonitorFromWindow' was not declared in this scope.
Run Code Online (Sandbox Code Playgroud)

其他方法显示得很好,比如LoadImage和CreateWindow.我缺少一些包容吗?我不认为这是我调用方法的方式,甚至是我包含头文件的方式,但如果你问,我仍然可以发布我的代码.没有多少.

编辑:当我检查范围中定义的内容时,最近的方法是ModifyWorldTransform(...)和MonikerCommonPrefixWith(...); 最近的字段都以MONITOR_INFO开头,MONITOR_ENUMPROC除外.没有MONITOR_DEFAULTTONEST/NULL /等.

编辑2:

#define UNICODE
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <process.h>
#include <windows.h>
#include <winuser.h>
Run Code Online (Sandbox Code Playgroud)

...

HMONITOR monitor = NULL;
HWND CreateFullScreenWindow(HWND hwnd){
    if(monitor==NULL){
        monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST);
    }
    return hwnd;
}
Run Code Online (Sandbox Code Playgroud)

c++ winapi scope

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

C++ - 为什么没有为元组(或 tuple_size_v 所在的地方)定义 size/ssize ?

我试图想象一个std::size不适合的场景std::tuple,但我却一片空白。它支持std::array,但是有它自己的size()方法,所以不需要专门化。但它也支持T[N],大概是因为它是静态大小的,即使它没有size()方法(它甚至没有std::tuple_size_v。)

那么为什么没有std::tuple得到std::size支持方法size()呢?我什至认为也许拥有std::tuple_size_v意味着它不需要一个,但同样适用于std::array

c++ stl tuples

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

Boost如何将流插入直接插入C字符串?

此示例和几个相关页面中,Boost似乎直接在const char数组上使用流插入运算符(<<).

BOOST_TEST_INFO("With parameter j = " << j);
Run Code Online (Sandbox Code Playgroud)

无论有没有'BOOST_TEST_INFO'或其他宏,我都会得到预期的编译错误

error: invalid operands of type const char[#] and int to binary operator<<
Run Code Online (Sandbox Code Playgroud)

在Boost标题中有一个名为basic_cstring.hpp的文件,我认为它是相关的,但它没有明确地包含在示例中(包括来自我的源代码似乎没有什么区别.)我缺少什么?

编辑 - 当且仅当在预处理期间发现周围的宏时,才选择流插入运算符; 否则,第一个错误是红色鲱鱼"无效运算符...到二元运算符".向BOOST_TEST_MESSAGE提供完全相同的行成功,但未声明BOOST_TEST_INFO,BOOST_TEST_CONTEXT等,这是一个单独的问题(据我所知).

c++ boost

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

为什么这些lambdas被认为是不同的类型?

我发现这种奇怪的行为__PRETTY_FUNCTION__,但奇怪的部分更多地与我认为是正确的行为而不是在解码中的怪癖.我错了.

auto lambda1 = [] { return __PRETTY_FUNCTION__; };
auto lambda2 = [] { return __PRETTY_FUNCTION__; };
//static_assert(std::is_same<decltype(lambda1), decltype(lambda2)>(), "Distinct types!");
std::cout << pretty(lambda1) << "\n" << pretty(lambda2) << std::endl;
lambda1(); // ...with T = main(int, const char**)::<lambda()>
lambda2(); // ...with T = main(int, const char**)::<lambda()>
Run Code Online (Sandbox Code Playgroud)

现在,我并不感到惊讶的是,他们不被认为是同一类型 - 只是他们是独特的,并没有在他们的签名中反映出来.(当lambdas返回null时,它的工作方式相同.)为什么会这样?

我还要指出,返回类型根本没有显示,我从未在常规函数中看到过.我确定返回类型是强类型的并且是lambda类型的基本部分,那么为什么它会被省略?

c++ lambda types c++14

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