小编riv*_*riv的帖子

小于 X 的元素数

我需要一个可以快速(记录 N)计算小于某个值/修改值的元素数量的结构。我知道用 RB 树或类似的树很容易做到,但我想通过使用 STL 来节省时间,它已经实现了这些树。但是,我找不到任何可以满足我需要的功能 - 甚至可能使用某种技巧吗?我知道它需要在每个子树中存储元素的数量,这可能不会正常执行。

c++ algorithm stl

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

本地定义的类中的私有范围

这是一个展示我问题的小例子:

class Foo {
private:
  int x;
  void y() {
    class Bar {
    public:
      Bar(Foo* foo) {
        foo->x = 3;
      }
    };
    Bar bar(this);
  }
};
Run Code Online (Sandbox Code Playgroud)

Foo和在其成员函数内定义的类y尝试访问其私有成员x.这是允许的吗?

Visual Studio 2013可以编译它,但IntelliSense似乎认为私有成员无法访问,并且foo->在嵌入类方法中键入时不会列出它们.

c++

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

如何在 Visual Studio 中查看 std::mutex 的锁定线程?

使用 Windows CRITICAL_SECTION,我可以通过扩展变量来查看锁定它的线程:

在此处输入图片说明

但是,我似乎无法对 , 做同样std::mutex的事情,而是获得了很多无用的值:

在此处输入图片说明

有没有不需要修改我的代码的方法?

c++ multithreading visual-studio

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

Git 提交未按提交日期排序

我们设置了一个构建流程来创建按提交日期排序的产品构建,但事实证明这并不总是正确的顺序?

最近的两个提交:

提交A

Author date:    22 hours ago (7/22/2019 16:56:46)
Commit date:    22 hours ago (7/22/2019 16:57:50)
Run Code Online (Sandbox Code Playgroud)

提交B

Author date:    22 hours ago (7/22/2019 16:57:22)
Commit date:    22 hours ago (7/22/2019 16:57:44)
Run Code Online (Sandbox Code Playgroud)

这就是它们在存储库中出现的顺序 - 提交 B 是最后一个,并且包含提交 A 的更改。然而,第一个提交的日期比第二个提交晚 6 秒。结果,构建系统以错误的顺序分配了构建号。

这是否意味着提交日期不是排序提交的可靠方法?

git

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

在不构造列表的情况下查找最多列表

我一直在玩Python,为一些竞争问题制作单行解决方案,我遇到了以下问题.我的解决方案可以写成max([f(k) for k in range(n)])(其中f(k)有一些简单的表达式),看起来很棒,但是当n它很大时,它会在找到最大值之前构建一个列表,这超出了内存限制.有没有办法找到最大值而不实际构建列表,同时仍然保持一行?我知道以下工作,但如果我想要,我只使用不同的语言:

best = f(0)
for k in range(n):
  best = max(best, f(k))
return best
Run Code Online (Sandbox Code Playgroud)

python

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

Python无法从同一目录导入?

我有以下目录结构(我没有写这个,所以我假设它必须以某种方式工作?):

tool.py
core/
  __init__.py
  config.py
  common.py
Run Code Online (Sandbox Code Playgroud)

tool.py间接导入config.py,并config.py有一行from common import foo,显示以下错误:

...
  File "...\core\config.py", line 5, in <module>
    from common import foo
ImportError: No module named 'common'
Run Code Online (Sandbox Code Playgroud)

它可能不相关,但我在Windows上使用Python 3.4,并且该tool.py目录位于系统路径中(我只是将其运行为tool).

python python-import

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

LESS/SASS中的主题变量

我希望在我的应用程序中支持多个主题 - 此外,我希望能够通过更改body元素上的类来动态更改主题,或者甚至让应用程序的不同部分使用不同的主题.

在我之前的项目中,每次我需要使用特定于主题的变量时,我都会通过添加显式规则来实现:

.theme-light & { background-color: @theme-light-background; }
.theme-dark & { background-color: @theme-dark-background; }
Run Code Online (Sandbox Code Playgroud)

但是,这种方法不能很好地扩展,并且会给源文件增加不必要的膨胀.

现在,我正在寻找一种更加自动化的方法.即以下

.button {
  border-radius: 4px;
  background-color: @ui-background;
  color: @ui-foreground;
  border: 1px solid mix(@ui-background, @ui-foreground, 50%);
}
Run Code Online (Sandbox Code Playgroud)

会变成类似的东西

.button {
  border-radius: 4px;
  border: 1px solid #808080;
    /* normally we wouldn't expect this to appear here, but in our case
    both themes have the same border color so we can't tell the difference */
}
.theme-light .button {
  background-color: #fff;
  color: #000;
} …
Run Code Online (Sandbox Code Playgroud)

css sass less

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

ES6 导出现有对象

我怎么会写

export { function1, function2 };
Run Code Online (Sandbox Code Playgroud)

但我不会写

const funcs = { function1, function2 };
export funcs;
Run Code Online (Sandbox Code Playgroud)

它在语义上不是一回事吗?

有没有办法从一个对象中导出所有属性而不一一列出它们?我希望能够将模块作为一个整体(即import Utils from './utils')和作为单个函数(import { function1 } from './util')导入,但它不会让我使用我的默认导出对象进行正常导出:

const Util = {
   ...
};

export ???; // <- what do I put here? do I really have to list every field in Util?
export default Util;
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

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

多重采样渲染缓冲区的用途是什么

如果我理解正确的话,渲染缓冲区只能用作帧缓冲区的附件,并且不能以任何方式读取或重用。如果是这样,多重采样渲染缓冲区的用例是什么?如果它们没有影响,哪些数据会写入其他 FBO 附件?或者是否可以以某种方式使用它们在主后缓冲区之外获取硬件 MSAA(WebGL2 尚不支持多重采样纹理)?

opengl-es webgl

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

std :: map只有移动构造函数可用

我有一个私有构造函数的类(我的容器类可以访问),删除了复制构造函数和默认移动构造函数.我该怎么用std::map

class Item {
public:
    Item(const Item&) = delete;
private:
    friend class Storage;
    Item(int value);
};

class Storage {
public:
    void addItem(int key, int value) {
        // what to put here?
    }
private:
    std::map<int, Item> items_;
};
Run Code Online (Sandbox Code Playgroud)

使用emplace(key, Item(value))不起作用,因为它试图复制构造项目.包装项目std::move具有相同的效果.使用piecewise_construct不起作用,因为地图(或对)尝试使用普通构造函数,这是私有的.

c++

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

VS2017不支持二进制折叠?

为什么以下代码不编译?

#include <iostream>

template<typename... Args>
void print_all( Args&&... args )
{
    std::cout << ... << args;
}

int main()
{
    print_all( 1, 2, 3, std::endl );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在使用/ std:c ++ 17的VS2017 15.9.7中遇到以下错误

error C2760: syntax error: unexpected token '...', expected 'expression'
error C2660: 'print_all': function does not take 4 arguments
Run Code Online (Sandbox Code Playgroud)

如果删除std :: endl,第二个错误将消失,但是无论使用哪种运算符,任何使用二进制折叠表达式的操作都会出现第一个错误。根据此页面,我的VS版本应支持折叠运算符。

c++ c++17 visual-studio-2017

-1
推荐指数
1
解决办法
85
查看次数