小编val*_*val的帖子

C++ lambdas如何/可以保留内部状态?

我有一个基本的lambda,看起来像这样:

auto l = [](){
  int i = 0;
  cout << i++;
}
Run Code Online (Sandbox Code Playgroud)

多次打电话,将继续打印0.如何保留我?我可以不用仿函数吗?

c++ lambda

7
推荐指数
3
解决办法
1574
查看次数

d3.js : 区分拖动/开始/结束和点击事件

正如标题所说,我有一个对象,我需要它的所有拖动和单击事件。有一些关于这个问题的讨论,但主要是关于点击和拖动事件。(并且回复小提琴没有正常工作)

我在这里有一个关于我在哪里的小提琴。当我拖动时,会阻止单击,但是当我单击时,会触发 dragstart 和 end 事件。我希望它们在我点击时不要触发,我希望在我想拖动时点击不要触发。

var drag = d3.behavior.drag()
  .origin(function(d){return d})
  .on('drag', function(d){
   d3.select(this).attr('cx', function(d){ return d.x += d3.event.dx });
   d3.select(this).attr('cy', function(d){ return d.y += d3.event.dy });   
   console.log('dragging');
})
.on('dragstart', function(d){
  d3.event.sourceEvent.stopPropagation()
  console.log('drag start');
})
.on('dragend', function(d){
  console.log('drag end');
})

// ..... 

 MySvgElementWith3DStuffOnIt.on('click', function(){
  if(d3.event.defaultPrevented) return;
  console.log('clicked');
});
Run Code Online (Sandbox Code Playgroud)

javascript d3.js

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

C#/WPF 中的霓虹灯/发光效果

我想在 wpf/c# 中创建一个类似霓虹灯的效果,用于一系列折线。

我最接近的是使用模糊(不是很接近,但是嗯),但是它使颜色变暗太暗,我不知道如何使这种发光。是否有接近于此的效果,或者我应该尝试以某种方式为其编写着色器?

我想为一个学校项目做这件事,我宁愿不交一堆外部库来编写少量的自编代码。另外关于谷歌:我发现的大多数东西几乎都是使用模糊/阴影来创建这些褪色的颜色,而不是实际上具有这种霓虹灯效果的东西。

c# wpf effects

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

使用 zlib 压缩 boost 二进制存档

我正在尝试压缩序列化的 boost 存档而不使用临时文件。我设法让它与临时文件一起工作,所以我正在尝试解决它的代码。

class MyClass {
public:
  int a;
  std::string b;
  template<class Archive> void serialize( Archive & arc, const unsigned int version ){
    arc & a & b;
  }
};

int main(){
  MyClass mc{ 4, "This is a somewhatishly long string." };

  std::ostringstream oss;
  boost::archive::binary_oarchive bo( oss );    
  bo << mc;

  std::ofstream ofs( "save.z", std::ios::out | std::ios::binary );
  boost::iostreams::filtering_ostreambuf fos;
  fos.push( boost::iostreams::zlib_compressor( boost::iostreams::zlib::best_compression ) );
  fos.push( bo );
  boost::iostreams::copy( fos, ofs );
}
Run Code Online (Sandbox Code Playgroud)

问题是我收到了两打模板编译错误fos.push(bo)

c++ boost zlib

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

在同一if语句中检查nullptr和有效索引

这是我正在处理的代码的过度简化版本.我想检查一个索引是否在有效的边界内,如果在给定索引的数组中,在一个if语句中有一个对象.

int main(){
  int* anArray[5]; // in the code there's either an object here or a nullptr
  int anIndex = 2; // something that I get from the depths of my code

  // int* <- typename not allowed
  // elem <- indentifier is undefined
  if(anIndex < 5 && int* elem = anArray[anIndex]){
    // use elem here
  }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用两个if语句检查索引,然后检查对象,但过了一段时间,if语句到处都有,我想避免这种情况.我究竟做错了什么?

编辑:问题不在索引,问题是,如果我检查一些东西,然后我想得到一个指针,我得到上面提到的错误if语句

c++ pointers if-statement

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

模板化矢量的构造函数(数学类)

对于我想要处理的小型软件渲染器项目,我需要不同类型的矢量,所以我想我会将它们模板化.

template<typename T, size_t dim> struct Vector {
  std::array<T, dim> data;

  Vector(){
    data = { 0 };
  }
}
Run Code Online (Sandbox Code Playgroud)

这适用于空矢量,如:

Vector<int, 3> v;
Run Code Online (Sandbox Code Playgroud)

但是我怎么能创建一个接受这样的sytax的构造函数:

Vector<int, 3> v(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

认为std :: initializer_list可以像这样工作:

Vector(std::initializer_list<T> values){
  data = values;
}
Vector<int, 3> v({1, 2, 3});
Run Code Online (Sandbox Code Playgroud)

但是编译器说在std::array和之间没有可接受的转换std::initializer_list,({1, 2, 3})语法看起来也很笨重.

c++

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

标签 统计

c++ ×4

boost ×1

c# ×1

d3.js ×1

effects ×1

if-statement ×1

javascript ×1

lambda ×1

pointers ×1

wpf ×1

zlib ×1