小编Ses*_*i R的帖子

Microsoft示例的此移动构造函数似乎具有冗余代码

开发人员的MSDN页面包含以下代码段:

// Move constructor.  
MemoryBlock(MemoryBlock&& other) : _data(nullptr), _length(0)  
{  
   std::cout << "In MemoryBlock(MemoryBlock&&). length = "   
             << other._length << ". Moving resource." << std::endl;  

   // Copy the data pointer and its length from source object.  
   _data = other._data;      // Assginment 1
   _length = other._length;  // Assignment 2

   // Release the data pointer from the source object so that  
   // the destructor does not free the memory multiple times.  
   other._data = nullptr;  
   other._length = 0;  
}
Run Code Online (Sandbox Code Playgroud)

有什么用的_data(nullptr) …

c++ move-constructor c++11

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

@SuppressWarnings("unchecked") 的位置是否重要?

我曾经使用过@SuppressWarnings("unchecked")

class SomeClass {
  public static void main(String [] args) {
    Vector v = new Vector();
    @SuppressWarnings("unchecked")
    v.addElement(new Integer(1_000_000));
    // ...        
Run Code Online (Sandbox Code Playgroud)

在使用 javac 8.0 版进行编译时,出现以下错误:

error: <identifier> expected
        v.addElement(new Integer(1_000_000));
Run Code Online (Sandbox Code Playgroud)

插入符号 (^) 指向addElement方法的左括号,还有一条错误消息抱怨缺少分号 (;)。第二条消息在 的右括号附近显示了插入符号addElement

但是,当我将@SuppressWarnings("unchecked")上面的class SomeClass{, 线移动时,如下所示:

@SuppressWarnings("unchecked")
class SomeClass {
Run Code Online (Sandbox Code Playgroud)

两个错误消息都会自动消失。这让我不知所措。定位有@SuppressWarnings("unchecked")那么关键吗?

java unchecked

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

具有多个变量的每个循环的C++ 11

我想将以下传统的for循环转换为C++ 11 for-each循环,而不需要额外的循环结构:

int a[] = { 5, 6, 7, 8, 9, 10 };
int b[] = { 50, 60, 70, 80, 90, 100 };

// Swap a and b array elements 
for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
{
   a[i] ^= b[i]; b[i] ^= a[i]; a[i] ^= b[i];
}
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以在C++ 11 for-each循环中提供多个变量,如:

for (int i, int j : ...)
Run Code Online (Sandbox Code Playgroud)

c++ for-loop c++11

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

为什么两个仅在注释中不同的java文件会产生不同的类文件?

我有一个名为One.java的文件,它只有一条注释行.我编译它来生成类文件One.class并将其重命名为old.class.然后,我打开了One.java,引入了另外五条注释行并再次编译它以生成One.class.两个类文件都有相同的大小,但当我在它们上运行diff时: diff One.class old.class 我得到了输出:

Binary files One.class and old.class differ
Run Code Online (Sandbox Code Playgroud)

这是我的One.java文件:

// One.java
class One
{
    public static void main(String [] args)
    {
        System.out.println("Hello Java world");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我修改过的One.java(附加注释行):

// One.java
// One.java
// One.java
// One.java
// One.java
// One.java
class One
{
    public static void main(String [] args)
    {
        System.out.println("Hello Java world");
    }
}
Run Code Online (Sandbox Code Playgroud)

我在运行High Sierra的iMac上使用Java SE 10.

java comments class

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

为什么我应该使用collect(Collectors.toList()),当我没有它时?

我在许多Java 8参考资料和示例中看到了以下代码:

List <Integer> l = Arrays.asList(7, 3, 9, 8, 6, 5, -1, -100);  

l.stream().filter(y -> y <l.get(0)).collect(Collectors.toList()).
      forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

但是,我可以使用以下方法获得相同的结果:

l.stream().filter(y -> y <l.get(0)).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

那么,使用几乎普遍使用的collect(Collectors.toList())的神圣性是什么?

java java-8 java-stream collectors

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

如何为“-&gt;” grep?

我想找出使用​​过Lambda表达式的Java文件列表。为此,我想grep表示“->”。一些类似于我的查询得到的响应是grep应该与-F选项一起使用。当我这样做时:

grep -F "->" *.java
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

grep: invalid option -- >
Run Code Online (Sandbox Code Playgroud)

我正在使用MacOS Darwin。

shell grep

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

毕达哥拉斯三胞胎使用python的列表理解

我可以使用for循环找出Pythagorean三元组,如下所示:

def triplet(n): # Find all the Pythagorean triplets between 1 and n (inclusive)
  for a in range(n+1):
    for b in range(a):
      for c in range(b):
        if a*a == b*b + c*c:
          print(a, b, c)
Run Code Online (Sandbox Code Playgroud)

我想使用list comprehension用一行代替它并尝试以下部分:

[a, b, c in range(n+1), range(a), range(b) if a*a == b*b + c*c]
Run Code Online (Sandbox Code Playgroud)

但是,我在结束方括号上得到语法错误.我试图使用简单的括号将列表更改为元组,但没有成功.我可以知道如何做对吗?

list-comprehension pythagorean python-3.x

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

在 Python 中,return 语句中尾随逗号的目的是什么?

在matplotlib 示例的animate_decay.py中,return语句与尾随逗号一起使用,如下所示:

return line,
Run Code Online (Sandbox Code Playgroud)

并且该函数是普通函数,而不是生成器函数。

所以,我编写了同一个函数的两个版本,一个带有尾随逗号,另一个没有:

def no_trailing_comma(x):
  return x + [10]

def trailing_comma(x):
  return x + [10],

data = [1, 2, 3]

print("With trailing comma", trailing_comma(data))
print("With no trailing comma", no_trailing_comma(data))
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,输出都是相同的:

尾随逗号 [1, 2, 3, 10]

没有尾随逗号 [1, 2, 3, 10]

语言规范 (Python 3.6) 没有特别提及 return 语句中的尾随逗号。我错过了什么吗?

python return matplotlib

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