小编Mar*_*key的帖子

C++11 - 捕获中的 lambda 函数传递向量并修改它

我有这个代码:

#include <iostream> 
#include <functional>
#include <vector>

int main () {
  std::vector<int> kk;
  kk.push_back(2);
  std::function<int(int)> foo = std::function<int(int)>([kk](int x)
  {
      kk.push_back(1);
      return kk[0]+1;
  });

  std::cout << "foo: " << foo(100) << '\n';

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能kk在 lambda 函数内部修改通过捕获传递的vector ?

我收到此错误:

11:21:错误:将 'const std::vector' 作为 'void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = 整数;_Alloc = std::allocator; std::vector<_Tp, _Alloc>::value_type = int]' 丢弃限定符 [-fpermissive]

我可以通过引用传递它,但问题是,如果从线程调用我的 lambda 并且向量将不再可用,它将超出范围。

lambda c++11

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

GLSL - 优化 if-else

我有 GLSL 移动着色器(ES 2.0),里面有这个:

float b = texture2D(t, texCoord).r;
float s = 0.0;
if (b > 240.0) s = b - 2322.2;
else if (b > 90.0) s = b - 74.0;    
else if (b < 10.0) s = b / 10.0;
else s = b - 10.0;  
Run Code Online (Sandbox Code Playgroud)

会不会很慢?我知道,应该避免着色器中的分支。有什么办法,如何重写这个来删除 ifs 吗?

shader if-statement glsl

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

如何更改以编程方式添加的UIButton约束

我在代码中添加了对UIButton的约束:

topBtn.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
  topBtn.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50)
])
Run Code Online (Sandbox Code Playgroud)

稍后,如果我单击某个按钮,我希望删除此约束并将其更改为

NSLayoutConstraint.activate([
  topBtn.topAnchor.constraint(equalTo: self.view2.topAnchor, constant: 50)
])
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?我试过了

NSLayoutConstraint.deactivate([
  topBtn.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50)
])
Run Code Online (Sandbox Code Playgroud)

但它没有效果,XCode抱怨我不能满足constarints.

ios autolayout swift

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

C++ 14中的多平台跨线程通信

我有C++ 14程序,它使用线程从大文件加载数据.我使用std::thread和在方法中,数据被加载.但是,在加载数据后,我需要通知主线程(GUI,控制台...),数据已准备就绪.我怎样才能做到这一点?

我找到了这个https://www.codeproject.com/Articles/16726/Cross-thread-calls-in-native-C,但它只是Windows.在Linux上,我可以使用信号和中断,但我不认为这是一个好主意.

有没有任何C++ 14机制,允许你在threadID上调用方法XY,操作系统会安排它吗?

c++ multithreading

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

标签 统计

autolayout ×1

c++ ×1

c++11 ×1

glsl ×1

if-statement ×1

ios ×1

lambda ×1

multithreading ×1

shader ×1

swift ×1