小编Giu*_*Pes的帖子

如何在C++中以编程方式确定表达式是否为rvalue或lvalue?

确定表达式是否是C++中的右值或左值的最佳方法是什么?可能这在实践中没有用,但是因为我正在学习rvalues和lvalues,所以我认为is_lvalue如果在输入中传递的表达式是左值而其他函数返回true 会更好.

例:

std::string a("Hello");
is_lvalue(std::string()); // false
is_lvalue(a); // true  
Run Code Online (Sandbox Code Playgroud)

c++ rvalue lvalue c++11

50
推荐指数
4
解决办法
4954
查看次数

贪心算法和启发式算法有什么区别?

贪心算法和启发式算法有什么区别?

我已经阅读了一些关于这个论点的文章,在我看来它们或多或少是相同类型的算法,因为它们的主要特征是在每次迭代时选择最佳(本地)选项来解决问题.

algorithm heuristics greedy

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

使用this.props.children呈现子项时,React上下文未定义

我在React面临一个非常讨厌的行为.我想使用上传从父组件到子组件的上下文getChildContext.只要我不在{this.props.children}渲染功能中使用,一切正常.如果我这样做,则子组件的上下文未定义.

我附加了一个重现此行为的代码示例.我无法弄清楚为什么bar组件的上下文字段Bazundefined.

var Baz = React.createClass({
 contextTypes: {
   bar: React.PropTypes.any
 },
 render: function() {
   console.log(this.context);
   return <div />;
 }
});

var Bar = React.createClass({
 childContextTypes: {
   bar: React.PropTypes.any
 },

 getChildContext: function() {
   return {
     bar: "BAR"
   };
 },

 render: function() {
   return (<div>{this.props.children}</div>);
 }
});

var Foo = React.createClass({
 render: function() {
   return <Bar>
      <Baz />
   </Bar>;
 }
});

console.log(React.version);

React.render(<Foo />, document.body);
Run Code Online (Sandbox Code Playgroud)

控制台输出:

Warning: owner-based and parent-based contexts differ …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-jsx

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

将F2映射到NEERDTreeToggle

我想打开和关闭NERDTree,按下F2按钮.我用这种方式映射它:

map <silent>  <F2> NERDTreeToggle 
Run Code Online (Sandbox Code Playgroud)

但是,实际上这不能正常工作,我不明白为什么......

vim nerdtree

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

Junit保护方法

我想知道在Junit中处理受保护方法的好方法.

假设我想测试一个名为A的类,它有一个受保护的成员和构造函数.我明白为了测试类,AI应该编写另一个名为ATest的类,它可能扩展TestCase(这在Junit3中应该是强制的).因为我想测试一个受保护的方法,并且因为A有一个受保护的构造函数,我的测试类ATest也应该扩展实现该方法的类A,以便能够创建该类并访问该方法.

可能是两个类的双重继承一个很好的解决方案?

PS我已经知道在Junit 4中可以避免TestCase的继承.

java junit junit4 junit3

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

为什么只能在C++类中初始化整数或枚举类型?

我不明白为什么C++只允许在类声明中定义整数类型和枚举(枚举也是一个整数类型).而所有其他类型,包括浮点类型(即double和float),必须在类声明之外定义.显然必须是这个的原因,但我无法弄清楚.

代码示例:

#include <iostream>

using namespace std;

struct Node {

  static const int c = 0;  // Legal Definition 
  static const long l = 0l; // Legal Definition 
  static const short s = 0; // Legal Definition 

  static const float f = 0.0f; // Illegal definition 
  static const string S = "Test"; // Illegal definition 

  static const string JOB_TYPE; // Legal declaration
  static const float f; // Legal declaration 
  static const double d; // Legal declaration 
};

const string Node::JOB_TYPE …
Run Code Online (Sandbox Code Playgroud)

c++ int enums c++11

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

与popen python一起使用时,输入命令似乎不起作用

我正在编写一个执行scala命令的小型python应用程序.用户可以通过STDIN插入命令,然后python应用程序将它们转发给scala解释器.执行命令后,应用程序将显示操作结果.

我的想法是用来Popen创建一个管道,我可以通过它发送命令和读取结果.这个想法很简单,但它不起作用.我不明白的是,为什么sys.stdin管道打开后它不再起作用了.这使得无法在python中读取命令.

这是我正在使用的代码:

import sys
from subprocess import Popen, PIPE

with Popen(["scala"], stdout=PIPE, stdin=PIPE, bufsize=0, universal_newlines=True) as scala:
    while True:
        print("Enter scala command >>> ", end="")
        sys.stdout.flush()
        command = input()
        scala.stdin.write(command)
        scala.stdin.flush()
        print(scala.stdout.readline())
Run Code Online (Sandbox Code Playgroud)

python subprocess pipe

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

Python LZMA:压缩数据在到达流结束标记之前结束

我正在使用内置的 lzma python 来解码压缩的数据块。根据数据块,我得到以下异常:

Compressed data ended before the end-of-stream marker was reached
Run Code Online (Sandbox Code Playgroud)

数据未损坏。用其他工具可以正确解压,所以肯定是库的bug。还有其他人遇到同样的问题:

不幸的是,似乎还没有人找到解决方案。至少,它可以在 Python 3.5 上运行。

我怎么解决这个问题?有什么解决办法吗?

python lzma python-3.x

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

初始化静态const变量

我对以下C++代码感到有点困惑:

#include <iostream>

using namespace std;

void test(const string& str)
{
    static const char * const c = str.c_str();
    cout << c << endl;
}

int main(int argc, char* argv[])
{
   test("Hello");
   test("Nooo");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于变量c被声明为staticconst,不应该只初始化一次并保持其初始值直到过程完成?根据这个推理,我期待以下输出:

Hello
Hello
Run Code Online (Sandbox Code Playgroud)

但我得到了:

Hello
Nooo
Run Code Online (Sandbox Code Playgroud)

您是否可以澄清为什么变量的值c在两个函数调用之间被修改,即使它是一个const变量?

c++ static

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

写入被跟踪进程的内存。

我在 linux 中玩弄 ptrace。我正在尝试使用 /proc/pid/mem 接口写入被跟踪进程的内存。

我用来完成这项任务的功能是:

void write_proc(pid_t child, unsigned long int addr) {

  char mem_file_name[100];
  char buf[10]="hope";
  int mem_fd;


  memset( (void*)mem_file_name, 0, 100);
  memset( (void *)buf, 0, 10);

  sprintf(mem_file_name, "/proc/%d/mem", child);
  mem_fd = open(mem_file_name, O_RDONLY);
  lseek(mem_fd, addr , SEEK_SET);

  if (write(mem_fd, buf, 5) < 0 )
    perror("Writing");

  return;

}
Run Code Online (Sandbox Code Playgroud)

但我总是收到错误:Writing: Bad file descriptor。

是否可以使用这种方法编写被跟踪的进程?

linux linux-device-driver linux-kernel

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