我正在尝试创建一个模板函数,该函数将函数作为参数,参数函数具有模板推导的参数.
示例时间:
这是一个接受固定函数类型并且有效的函数
void func_a(void(*func)(int)) {
func(1);
}
int main() {
auto f = [](int x) -> void { printf("%i\n", x); };
func_a(f);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我想要做的,扩展第一个例子(这不会编译)
template <typename... T>
void func_b(void(*func)(T...)) {
func(1);
}
int main() {
auto f = [](int x) -> void { printf("%i\n", x); };
func_b(f); // neither of
func_b<int>(f); // these work
return 0;
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想func_b同时接受常规函数和lambda函数func_a,但使用模板魔法.
我有以下代码
class a {
public:
const int aa;
a(int aa) : aa(aa){}
};
int main() {
std::vector<a> v;
v.emplace_back(1);
v.emplace_back(2);
v.emplace_back(3);
v.emplace_back(4);
std::iter_swap(v.begin() + 1, v.rbegin());
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试交换向量的两个元素时,我收到错误.
Error C2280 'a &a::operator =(const a &)': attempting to reference a deleted function
Run Code Online (Sandbox Code Playgroud)
我理解这是因为a有一个不变的成员,但我无法弄清楚如何使这个工作.
我在我的C++应用程序中使用GLFW作为窗口,我正在尝试使用GLFW的回调来获取输入事件.例如,这是您获取关键事件的方式:
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods){
// Do something with event data.
}
int main(){
// initialize window (I have no problems with this step)
glfwSetKeyCallback(window, key_callback);
// Now when a key is pressed in the window it will call this function.
}
Run Code Online (Sandbox Code Playgroud)
问题:
在我的key_callback我想要使用在key_callback函数外声明的变量,因为我不能改变参数,key_callback我无法传递对变量的引用.
现在,在上面给出的例子中,我可以简单地宣布我的变量外int main()无一不key_callback和int main()将有机会获得该变量的同一个实例.
我想要的用途:
我希望有一个WindowWrapper创建和管理生命周期的类glfwWindow,这将包括设置事件回调.
WindowWrapper.h
// Includes
class WindowWrapper{
private:
Centrum* g_centrum_; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用CSS样式发送HTML电子邮件。
我有代码style = 'background-color: rgba(255, 255, 255, 0.4)'
,它不会应用它,而是使背景完全不透明。
我试图在身体加载时触发一个功能.我知道你可以从body标签做到这一点,但如果可能的话,我更愿意从JS做到这一点.
例如: document.getElementsByTagName('body').onload = someFunc();
这对我不起作用,但我认为它显示了我本来想要做的事情.
编辑:
我已经尝试了答案,似乎问题是它在加载body标签中使用的元素之前调用函数,即使我将脚本标记放在体内.这就是它需要做的事情:
var buttonElements = document.getElementsByClassName('button');
如果我这样做:
alert(buttonElements)
它会弹出0,但是当我在控制台中创建一个变量时,它会成功地用元素填充它.
我试图在搅拌机中移动网格,以便最低的z点是z = 0.这将使最低点位于Z = 0平面上.这比较困难,因为我首先通过其最大轴来缩放模型.这不仅仅是我正在使用的一个案例,所以我试图让这个工作适用于任何单个网格模型.
这是我目前的尝试:
mesh_obj = bpy.context.scene.objects[0]
# I first find the min and max of the mesh. The largest and smallest points on the Z-axis
max_floats = [mesh_obj.data.vertices[0].co[0], mesh_obj.data.vertices[0].co[1], mesh_obj.data.vertices[0].co[2]]
min_floats = [mesh_obj.data.vertices[0].co[0], mesh_obj.data.vertices[0].co[1], mesh_obj.data.vertices[0].co[2]]
for vertex in mesh_obj.data.vertices:
if vertex.co[0] > max_floats[0]:
max_floats[0] = vertex.co[0]
if vertex.co[0] < min_floats[0]:
min_floats[0] = vertex.co[0]
if vertex.co[1] > max_floats[1]:
max_floats[1] = vertex.co[1]
if vertex.co[1] < min_floats[1]:
min_floats[1] = vertex.co[1]
if vertex.co[2] > max_floats[2]:
max_floats[2] = vertex.co[2]
if vertex.co[2] < …Run Code Online (Sandbox Code Playgroud) 在我的程序中,我正在做一个模型的渲染.我有一个生成的无符号字符数组,其中每个字节中的所有位都可以使用.数组中的每个三角形都有一个元素.获取我使用的三角形的颜色,gl_PrimitiveID它给出了正在渲染的缓冲区中三角形的位置.
我的问题是我的GPU是4.2意味着我只能使用UBO而不是SSBO.最大数组大小(字节数组)略大于16,000,我需要100,000,所需的最小UBO大小为16KB.在我的情况下,使用标准的均匀浮点数[N]与UBO具有相同的限制.
我一直在看这个:https://www.opengl.org/registry/specs/NV/shader_buffer_load.txt
但我想知道在使用特定设备之前是否还有其他选择.
我现在的Frag-Shader如果你想看到:
#version 420 core
out vec3 color;
layout (std140) uniform ColorBlock{
unsigned char colors[16000]; // this need to be 100,000
};
void main(){
float r, g, b;
r = colors[1.0f / gl_PrimitiveID];
g = colors[1.0f / gl_PrimitiveID];
b = colors[1.0f / gl_PrimitiveID];
color = vec3(r, g, b);
}
Run Code Online (Sandbox Code Playgroud) 我正在探索使用std::function和std::bind.我看到你可以绑定一个成员函数,例如:
class A{
int c_ = 10;
public:
int add(int a, int b){
return a + b + c_;
}
};
int main(){
A* p_a = new A;
std::function<int()> f = std::bind(&A::add, p_a, 1, 1);
printf("%i\n", f()); // yields "12" (1 + 1 + 10)
delete p_a;
printf("%i\n", f()); // yields derpy numbers, no errors thrown.
}
Run Code Online (Sandbox Code Playgroud)
有没有办法检测p_a是否已被删除?
我这样做的解决方案是拥有一个包装函数和包含weak_ptr对象的包装类.我只是想知道是否有一种更优雅的方式来做到这一点.
我在使用正则表达式在js中允许空格时遇到问题.我不确定它是什么,但我一直在搜索,但无法找到有效的答案.
我对正则表达式来说真是个新手,所以请善待这个简单的事情.
这是我目前允许的字符:
var validChar = /^[A-Z0-9]+$/i;
如果我在其中添加一个空格,它将无法工作:/^[A-Z 0-9]+$/i
我需要做些什么才能让它识别空间?
假设我有一个返回的函数int.我不存储函数调用的值.我认为它没有存储在内存中并逐渐淡入以太,但我不知道.谢谢.
经验教训,在做基准测试时总是使用优化...
我决定将其std::unique_ptr视为我的计划的替代方案.关于为什么不重要的原因.
使用编译器优化后,它们似乎需要等量的时间.
我是如何测试的:
time_t current_time;
time(¤t_time);
srand((int)current_time);
//int* p0 = new int[NUM_TESTS];
//int* p1 = new int[NUM_TESTS];
std::unique_ptr<int[]> u_p0{ new int[NUM_TESTS] };
std::unique_ptr<int[]> u_p1{ new int[NUM_TESTS] };
for (unsigned i = 0; i < NUM_TESTS; ++i){
u_p0[i] = rand(); // Use p0 and p1 for the standard ptr test
u_p1[i] = rand();
}
int result;
auto start = std::chrono::steady_clock::now();
for (unsigned index = 0; index < NUM_TESTS; ++index){
result = u_p0[index] + u_p1[index]; // Use p0 and …Run Code Online (Sandbox Code Playgroud) c++ ×7
c++11 ×3
function ×2
javascript ×2
pointers ×2
bind ×1
blender ×1
buffer ×1
callback ×1
const ×1
css ×1
glfw ×1
glsl ×1
html ×1
html-email ×1
lambda ×1
mesh ×1
onload ×1
opengl ×1
performance ×1
python ×1
regex ×1
return ×1
return-value ×1
scale ×1
swap ×1
templates ×1
translation ×1
unique-ptr ×1
vector ×1