小编Mar*_*Mao的帖子

WindowsSDK_IncludePath在哪里定义?

宏$(WindowsSDK_IncludePath)具有图片中显示的值.

我想知道这些值的定义在哪里,它们必须在某些文件中定义.

图片来自Visual Studio 2013.

在此输入图像描述

visual-studio visual-studio-2013 visual-studio-2015

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

在使用STL容器时,我应该使用int还是unsigned int?

请参阅本指南:http:
//google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone = Integer_Types #Integer_Types

谷歌建议int大部分时间使用.
我尝试遵循本指南,唯一的问题是STL容器.

例如:
1.

void SetElement(int Index, int Value)
{
    if (Index > Vector.size()) return;
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果我用intIndex,我得到了一个警告这里.

2.

for (int i = 0; i < Vector.size(); ++i)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

说到循环计数器,同样的警告.

如果我声明Indexiunsigned int它传播,我必须声明更多变量,unsigned int并且不会有一致性.

我能想到的最好的方法是使用像:
if (Index > static_cast<int>(Vector.size()) ...或者
for (int i = 0; i < static_cast<int>(Vector.size()); ++i) ...
我真的不喜欢演员.

有建议的方法吗?

PS
还有更多的理由比链接给出的for循环示例.
要仅使用有符号整数,我可以避免有符号/无符号警告,强制转换,
并确保每个值都可以是负数(为了保持一致),
并且我总是可以使用-1作为无效值. …

c++ warnings integer stl casting

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

为什么这种内存管理技巧有效?

请参阅此Unity文档并转到部分

大堆与缓慢但不常见的垃圾收集

    var tmp = new System.Object[1024];

    // make allocations in smaller blocks to avoid them to be treated in a special way, which is designed for large blocks
    for (int i = 0; i < 1024; i++)
        tmp[i] = new byte[1024];

    // release reference
    tmp = null;
Run Code Online (Sandbox Code Playgroud)

诀窍是在程序启动时预先分配一些内存块.

为什么这个技巧有效?

当应用程序被预先分配时,这些块是否已经被"注册"(或"绑定")到应用程序,因此即使tmpStart()完成时释放它们,操作系统仍将这些块视为"已注册"到应用?由于块已"注册"到应用程序,因此应用程序的堆大小扩展到一定大小,并且下次获取内存块时,操作系统将从此应用程序的堆中选择它.

我的解释是否正确?无论是或否,有人可以请详细解释,谢谢.

c# memory-management unity-game-engine

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

我的函数应该返回一个指向std :: vector的指针,还是对std :: vector的引用?

我有一个std::map<int, std::vector<SomeStruct>>,
并提供一个查询std::vector<SomeStruct> FindData(int key).

为了防止复制整个数据,我将其修改为std::vector<SomeStruct>& FindData(int key).
但是,没有确定的数据key,所以有时我没有任何回报.
在这种情况下,我声明一个空的文件范围变量std::vector<SomeStruct>并返回它.

但是如果我选择指向vector的指针,std::vector<SomeStruct>* FindData(int key)那么我就可以返回NULL不存在的指针key.

哪一个更好?
我在问题中学到指针std::vector是坏的(或者很奇怪?不确定)(这个指针操作还有其他语法吗?)
我个人也喜欢参考std::vector,所以我可以使用operator[]更简单,但缺点是我必须为它声明一个额外的空变量.

代码示例如下:In SomeClass.h

typedef std::vector<SomeStruct> DataVec;
typedef std::map<int, DataVec> DataMap;
DataMap m_DataMap;
Run Code Online (Sandbox Code Playgroud)

现在在SomeClass.cpp:

情况1:

namespace
{
    DataVec EmptyVector;
}

DataVec& FindDatas(int key)
{
    DataMap::iterator It = m_DataMap.find(key);

    if (It == m_DataMap.end()) return EmptyVec;

    return It->second;
}
Run Code Online (Sandbox Code Playgroud)

案例2:

DataVec* FindDatas(int …
Run Code Online (Sandbox Code Playgroud)

c++ stl stdvector

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

代表中的协方差,任何例子?

我正在阅读这篇msdn文章,逆向示例(键盘和鼠标事件)非常有用,而协方差示例(Mammal和Dog)看起来并不那么好.

键盘和鼠标事件非常棒,因为您可以为多个案例使用1个处理程序; 但我不能想到将一个返回更多派生类型的处理程序分配给返回基类型的处理程序的优点,更不用说拥有一个关心返回类型的委托似乎不太常见了?

有人可以在代表中提供一个更实际的协方差例子吗?

.net c# delegates covariance contravariance

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

vector :: clear()花了这么多时间?

我在我的程序上运行了一个分析器(非常困),它在我的重置功能上显示了很高的百分比(重置功能每帧运行).程序看起来像这样:

初始部分:

std::vector<std::vector<int>> VecOfVecOfPath;
VecOfVecOfPath.resize(20); 
for(int i=0; i<20; i++) VecOfVecOfPath.reserve(640);
Run Code Online (Sandbox Code Playgroud)

VecOfVecOfPath是其他函数找到的一系列路径.VecOfVecOfPath [i]将在每帧执行期间填充.例如,它push_back由其他功能组成,并在每帧使用前重置.

重置功能:

void Reset()
{
for(int i=0; i<20; i++) VecOfVecOfPath[i].clear();
}
Run Code Online (Sandbox Code Playgroud)

所以重置非常简单,但在profiler中确实有很高的排名.

这是常见的吗?即使对于内置类型向量,vector :: clear()是否确实有这样的开销?

谢谢!


我尝试在发布模式下构建程序,然后将成本降低到几乎为零.从12~13%到0.03~0.04%.

然后我去了源代码,并且有类似ITERATOR_DEBUG_LEVEL的定义,在调试模式下影响额外的操作.

所以就像@noggin182建议的那样,在Debug和Release模式下情况有所不同.

引用:"请确保你在发布版本中进行分析并搜索是否有任何预处理器条件定义你设置为提升性能. - noggin182 1月3日15:32"

c++ performance vector clear

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

"npm install"给出错误消息"无效",它是什么?

在此输入图像描述

请查看图片.

我想这与我有关package.json但不太确定.


回复评论以获取更多信息

最初我正在安装material-ui.

详细信息如下:

我:\ react-boilerplate> npm install material-ui

react-boilerplate@3.4.0 I:\ react-boilerplate

+ - material-ui@0.17.1

| + - keycode@2.1.8

| + - lodash.throttle@4.1.1

| + - UNMET PEER DEPENDENCY react@^15.4.2

| + - react-addons-create-fragment@15.4.2

| + - react-addons-transition-group@15.4.2

| + - react-event-listener@0.4.3

| | + - UNMET PEER DEPENDENCY react@^15.4.2

| | ` - react-addons-shallow-compare@15.4.2

| + - recompose@0.22.0

| | ` - change-emitter@0.1.3

| ` - simple-assign@0.1.0

+ - UNMET PEER DEPENDENCY react-tap-event-plugin@^2.0.1

` …

npm npm-install

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

如何使用枚举成员初始化结构体?

我有一个包含许多成员和不同类型的结构(大约有 20 个成员):

enum TheEnum
{
    FIRST = 0,
    SECOND,
    ...
}

struct TheStruct
{
    TheEnum z; // <--- the point !!! note that this is the first member (edited)
    int a;
    int b;
    char c[32];
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于有一个枚举类型成员,我不能像这样声明:

TheStruct Object = {0};
Run Code Online (Sandbox Code Playgroud)

它会给出编译错误,但在我看来,这种初始化是最好的方法。

我能想到的其他方法是:
1.ZeroMemory它,但我不喜欢这个。
2. 编写一个构造函数,但这需要大量的工作。
3. 只是不要初始化它。

那么,有没有办法解决枚举问题呢?我应该在这三种方式中选择一种吗?
谢谢!

编辑:我的一个大错误,该错误仅在TheEnum作为第一个成员出现时才会发生。
使用 vs2008 编译并作为 C++ 代码。
错误是C2440。http://msdn.microsoft.com/en-us/library/sy5tsf8z%28v=VS.80%29.aspx

c++ struct

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

npm install 导致模块不完整,但yarn install 成功,为什么它们的行为不同?

我尝试npm installnpm install --no-optional我的分叉存储库,但它没有完全安装:(git+https://github.com/marsonmao/react-sketch#v0.4.104链接

使用 npm install 后,只安装了部分存储库: 中只有/node_modules.eslintrckarma.config.jsREADME.md... 等MyProject/node_modules/react-sketch,但没有/lib/src... 等。

然后我尝试了一下yarn install,成功了,存储库中的每个文件都已安装。

那么为什么 npm 失败而yarn 成功呢?

npm 版本:5.5.1,yarn 版本:1.3.2

npm npm-install yarnpkg

5
推荐指数
0
解决办法
446
查看次数

OpenFileDialog InitialDirectory不接受相对路径吗?

dialog是一个OpenFileDialog类对象,我正在使用ShowDialog()方法.

当我使用包含相对路径的路径时,例如:

dialog.InitialDirectory = "..\\abcd";
dialog.InitialDirectory = Directory.GetCurrentDirectory() + "..\\abcd";
Run Code Online (Sandbox Code Playgroud)

ShowDialog() 崩溃,我只能做一个明确的路径,从磁盘驱动器开始:

dialog.InitialDirectory = "C:\\ABC\\DEF\\abcd";
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望路径是我的.exe的当前目录的1级,然后向下到目录abcd)
.exe的当前路径可以找到Directory.GetCurrentDirectory(),这是完全正常的,但我不能继续"..")

目录层次结构如下:

ABC
    DEF 
        abcd (where i want)
        defg (where .exe is at)
Run Code Online (Sandbox Code Playgroud)

那么,有没有任何使用方法"..\\"InitialDirectory
或者我必须使用明确的路径?
谢谢!

c# relative-path openfiledialog

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