小编hid*_*yat的帖子

std :: min给出了错误

#include <algorithm>
#include <Windows.h>

int main()
{
    int k = std::min(3, 4);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

什么是Windows正在做,如果我包括Windows.h我不能在Visual Studio 2005中使用std :: min.错误消息是:

error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2005

99
推荐指数
6
解决办法
5万
查看次数

在Python中复制多个文件

如何使用Python将一个目录中的所有文件复制到另一个目录.我将源路径和目标路径作为字符串.

python copy file

78
推荐指数
5
解决办法
15万
查看次数

矢量擦除迭代器

我有这个代码:

int main()
{
    vector<int> res;
    res.push_back(1);
    vector<int>::iterator it = res.begin();
    for( ; it != res.end(); it++)
    {
        it = res.erase(it);
        //if(it == res.end())
        //  return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

"一个随机访问迭代器,指向函数调用擦除的最后一个元素之后的元素的新位置,如果操作擦除了序列中的最后一个元素,则为向量结束."

此代码崩溃,但如果我使用if(it == res.end())然后返回它的工作原理.怎么会?for循环是否兑现了res.end(),因此不相等的运算符失败了?

c++ iterator vector

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

std :: function到成员函数

#include <functional>

struct A
{
    int func(int x, int y)
    {
        return x+y;
    }
};

int main()
{

    typedef std::function<int(int, int) > Funcp;
    A a;
    //Funcp func = std:::bind(&A::func, &a);
    Funcp func = std::bind(&A::func, a, std::placeholders::_1);


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

我在上述两个绑定函数中都遇到错误:

 error C2825: '_Fty': must be a class or namespace when followed by '::'
Run Code Online (Sandbox Code Playgroud)

语法错误在哪里?我正在使用visual studio 2010

c++ function-pointers

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

打印虚拟成员函数的地址

我正在尝试打印虚拟成员函数的地址.如果我知道哪个类实现了我可以编写的函数:

print("address: %p", &A::func);
Run Code Online (Sandbox Code Playgroud)

但我想做这样的事情:

A *b = new B();

printf("address: %p", &b->func); 
printf("address: %p", &b->A::func);
Run Code Online (Sandbox Code Playgroud)

但是这不会编译.是否有可能做这样的事情,也许在运行时查找vtable中的地址?

c++ virtual vtable

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

Vulkan中命令缓冲区之间的同步

有几种方法可以处理Vulkan中的同步.这就是我理解的方式:

  • Fences是GPU到CPU的同步.
  • 信号量是GPU到GPU的同步,它们用于同步队列提交(在相同或不同的队列上).
  • 事件更通用,在CPU和GPU上重置和检查.
  • 障碍用于命令缓冲区内的同步.

在我的情况下,我有两个命令缓冲区.我希望第二个命令缓冲区在第一个命令缓冲区之后执行.

submitInfo.pCommandBuffers = &firstCommandBuffer;
vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);

// wait for first command buffer to finish
submitInfo.pCommandBuffers = &secondCommandBuffer;
vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);
Run Code Online (Sandbox Code Playgroud)

什么样的同步最适合这个?如果我使用的vkQueueWaitIdle(queue)),是与使用栅栏相同的东西,或者我应该使用事件或信号量?

如果我同时向队列发送多个命令缓冲区:

std::vector<VkCommandBuffer> submitCmdBuffers = {
        firstCommandBuffer,
        secondCommandBuffer
    };
    submitInfo.commandBufferCount = submitCmdBuffers.size();
    submitInfo.pCommandBuffers = submitCmdBuffers.data();
Run Code Online (Sandbox Code Playgroud)

还有一种方法可以在第一个和第二个之间同步吗?

c++ synchronization gpu vulkan

23
推荐指数
2
解决办法
2644
查看次数

函数模板特化编译错误

##A.hh

template<class T> void func(T t) {}
template<> void func<int>(int t) {}

void func2();

##A.cpp

void func2() {}

##main.cpp

func("hello");
func(int());
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:错误LNK2005:"void __cdecl func(int)"(?? $ func @ H @@ YAXH @ Z)已在A.obj中定义,找到一个或多个多重定义的符号

函数模板特化是否不被视为普通函数模板?看起来它将在A的目标文件中.

c++ templates template-specialization

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

为什么容器的构造函数中没有容量参数?

如果我想将容量设置为std::vector我必须调用.reserve(...),是否有任何理由为什么stl中的容器的构造函数中没有容量参数std::string,std::vector

c++ containers stl

17
推荐指数
2
解决办法
2935
查看次数

使用着色器在opengl中绘制深度值

我想在片段着色器中绘制深度缓冲区,我这样做:

顶点着色器:

varying vec4 position_;

gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
position_ = gl_ModelViewProjectionMatrix * gl_Vertex;
Run Code Online (Sandbox Code Playgroud)

片段着色器:

float depth = ((position_.z / position_.w) + 1.0) * 0.5;

gl_FragColor = vec4(depth, depth, depth, 1.0);
Run Code Online (Sandbox Code Playgroud)

但是我打印的都是白色的,我做错了什么?

opengl shader

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

警告:缩小转换C++ 11

g ++ 4.9.0 -O2 -std = c ++ 11

template<class T>
struct vec3 {
    T x, y, z;
    vec3() = default;
    vec3(const vec3<T> &other) = default;
    vec3(T xx, T yy, T zz) { x = xx; y = yy; z = zz; }
    vec3<T> operator-(const vec3<T> &other) { 
      return vec3<T>{ x - other.x, y - other.y, z - other.z }; 
    }
};

int main() {
    vec3<char> pos{ 0, 0, 0 };
    vec3<char> newPos{ 0, 0, 0 };
    auto p = …
Run Code Online (Sandbox Code Playgroud)

c++ templates narrowing c++11

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