小编Ian*_*ung的帖子

仅使用重复项从其他人创建新载体

假设我有一组vector<int>

std::vector<int> a = {2,3,8,4,9,0,6,10,5,7,1};
std::vector<int> b = {6,10,8,2,4,0};
std::vector<int> c = {0,1,2,4,5,8};
Run Code Online (Sandbox Code Playgroud)

我想创建一个新向量,以使只有所有输入向量共有的元素才能输入到新向量中,如下所示:

std::vector<int> abc = {8,2,0,8}; // possible output, order doesn't matter
Run Code Online (Sandbox Code Playgroud)

我已经看到许多问题,询问如何删除重复项,但我希望保留重复项。

是否有现有的高效STL算法或结构可以为我做到这一点,还是我需要自己编写?

c++ algorithm stl

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

将包含浮动的结构转换为更网络友好的结构

我正在尝试通过网络发送包含浮点数据的结构,该结构包含两种不同的硬件架构,用 C 编写。

客户端运行在x86_64架构上,服务器运行在PPC(32位)架构上。

看来我将数据转换为网络友好格式或从网络友好格式转换为数据的唯一选项是:

htons/ ntohs(2 字节)和htonl/ ntohl(4 字节)

似乎没有处理浮点数的版本(这是有道理的,因为不同的体系结构/字节序有不同的浮点数表示)。

因此,我尝试通过以下方式将浮点数拆分为整数和指数格式:

void FtoME(float num, int32_t* mantissa, int32_t* exponent)
{
    int32_t sig = (int32_t)num;
    int32_t exp = 0;
    double frac = num-sig;
    double temp = num;
    while (frac > 0 && exp > -20)
    {
        temp = temp * 10; //left shift the whole number
        sig = (int32_t)temp; //get the integer part
        frac = temp - sig; //get the fractional part
        exp--;
    }
    printf("Scientific note: …
Run Code Online (Sandbox Code Playgroud)

c computer-science network-programming

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

在Vulkan代码中,VK_KHR_WIN32_SURFACE_EXTENSION_NAME未定义

我正在尝试编写一个简单的基于vulkan的应用程序,但在尝试将表面扩展添加到已启用扩展的列表时,如下所示:

    enabledExtensions.push_back( VK_KHR_SURFACE_EXTENSION_NAME );
#if defined (_WIN32)
    enabledExtensions.push_back( VK_KHR_WIN32_SURFACE_EXTENSION_NAME );
#else
    enabledExtensions.push_back( VK_KHR_XCB_SURFACE_EXTENSION_NAME );
#endif
Run Code Online (Sandbox Code Playgroud)

视觉工作室抱怨VK_KHR_WIN32_SURFACE_EXTENSION_NAME未定义.

当我右键单击它并转到定义时,它会打开vulkan.h.经过检查,VK_USE_PLATFORM_WIN32_KHR我发现这也是未定义的,这阻止了定义VK_KHR_WIN32_SURFACE_EXTENSION_NAME.有人可以解释如何解决这个问题吗?

c++ graphics vulkan

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

下标("[]")运算符给出了奇怪的错误

我从visual studio获得了一些奇怪的行为,关于以下代码片段,错误列表显示了E0349的几个实例:没有运算符"[]"匹配这些操作数.

Intellisense似乎暗示了类型不匹配,但正如您将在代码中看到的那样,没有类型不匹配.

首先,为了制作mat4,我已经定义了一个Vec4结构:(我只包含了相关的功能)

struct Vec4f
{
    union
    {
        struct { float x, y, z, w; };
        struct { float r, g, b, a; };
    };
    // copy constructor
    Vec4f(Vec4f const & v) :
        x(v.x),
        y(v.y),
        z(v.z),
        w(v.w)
    {

    }
    // Operators
    float & operator[](int index)
    {
        assert(index > -1 && index < 4);
        return (&x)[index];
    }

    Vec4f & operator=(Vec4f const & v)
    {
        // If I use: "this->x = v[0];" as above, E0349
        this->x = v.x;
        this->y = v.y; …
Run Code Online (Sandbox Code Playgroud)

c++ const operator-overloading visual-studio

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

角垫表和移位单击选择

我正在尝试MatDataTable使用 angular 和 typescript在排序上实现 shift 单击功能。

基本原理是,只要在表上注册了单击事件,就会存储选定的行。

如果检测到 shift 单击,该组件将尝试在最后选定的行和当前选定的行之间进行选择(就像在 Windows 中使用 shift 单击选择一样)。

我的事件处理代码如下:

clickHandler(event, row, index) {
    console.log('index clicked: ' + index);
    if (event.ctrlKey) {
        this.selectRows(row, index); // This records this.lastSelected
    } else if (event.shiftKey) {
        this.selectRowsFill(row, index); 
    } else {
        this.selectElement(row, index); // As does this call.
    }
}

// This function computes a start and end point for autoselection of 
// rows between this.lastSelected, and the currently clicked row
selectRowsFill(row, index) {
    const indexA …
Run Code Online (Sandbox Code Playgroud)

typescript angular

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

如何正确设置 mat-checkbox 的样式

我正在尝试根据以下要求设置 mat-checkbox (material2) 样式:

始终可见的黑色边框(无论检查状态如何)(#0000000)

选中后,“勾号”将是白色(#ffffff),在彩色(青色)背景上(边框仍然可见)

未选中时,复选框的背景(边框内)应为灰白色 (#dddddd)。

到目前为止,我已经能够设置边框颜色,但是当检查时,它会消失,背后的颜色

我可以设置未选中的背景颜色,但同样,当我这样做时,黑色边框消失了。如果我删除此设置,边框会出现,但背景颜色是错误的。

我设置的scss属性如下:

::ng-deep .mat-checkbox .mat-checkbox-frame {
    border-color: mat-color($darkPrimary, darker); //black
  }

::ng-deep .mat-checkbox-background {
    background-color: mat-color($darkPrimary, 200); //off-white
}
Run Code Online (Sandbox Code Playgroud)

似乎无论我将背景设置为什么,都会覆盖边框样式。此外,当我更改复选框的状态时,黑色边框短暂出现,然后再次消失。我如何满足这些要求?

css typescript angular-material2 angular

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

从stl列表中删除对象指针

请考虑以下代码,该代码导致访问冲突:

for(std::list<ProjectileNode*>::iterator it = m_Projectiles.begin(); it!=m_Projectiles.end(); it++)
{
    if(!(*it)->isActive()) //isActive returns a bool
    {
        m_Projectiles.remove((*it));
    }
}
Run Code Online (Sandbox Code Playgroud)

if(!(*it)->isActive()) 导致异常.

我是新手使用列表,可以使用一些帮助.指向的对象在其他地方进行管理,因此我不希望它们被销毁,只是从列表中删除,而不会导致此异常

c++ stl

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

编译器如何评估模板函数?

考虑以下可变参数模板函数:

template<typename T, typename... Args>
auto foo(Args... args) -> T[sizeof...(args)]
{
   T t[sizeof...(args)];
   // Maybe do some pack expansion/assignment
   return t;
}
Run Code Online (Sandbox Code Playgroud)

实例化:

// total should be of type int[5];
auto total = foo(1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

我知道这不会编译,因为返回类型不可归类,但我不明白为什么它不可推导.

编译器在编译时是否知道这个函数有什么东西,或者被评估的函数部分的顺序是什么,这会阻止类型推导?

我怀疑这是由于函数的调用sizeof...,我认为在运行时进行评估.如果是这样,是否有编译时等效?

c++ templates metaprogramming c++11

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