小编mat*_*ule的帖子

ReadOnlyDictionary和ImmutableDictionary之间有什么区别?

在C#中,这两个容器之间的关键区别(在功能或用例方面)是什么?似乎没有任何信息可以在Google上比较这些信息.

System.Collections.ObjectModel.ReadOnlyDictionary System.Collections.Immutable.ImmutableDictionary

我知道ImmutableDictionary是线程安全的.ReadOnlyDictionary也是如此吗?

.net c# immutable-collections

21
推荐指数
2
解决办法
3017
查看次数

如何在 JsonPath 中过滤非数组

使用以下 JSON(来自http://jsonpath.com):

{
  "firstName": "John",
  "lastName" : "doe",
  "age"      : 26,
  "address"  : {
    "streetAddress": "naist street",
    "city"         : "Nara",
    "postalCode"   : "630-0192"
  },
  "phoneNumbers": [
    {
      "type"  : "iPhone",
      "number": "0123-4567-8888"
    },
    {
      "type"  : "home",
      "number": "0123-4567-8910"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

仅当 firstName 是 John 时,我才想获取根对象。

我已经尝试过这些输入和许多其他类似的输入:

  • $.[?($.firstName == 'John')]
  • $.[?($.'firstName' == 'John')]
  • $.[?(@.firstName == 'John')]
  • $[?($.firstName == "John")]

似乎过滤仅适用于数组,因此这是一个不受支持的功能。有人知道在 Json.NET 中执行此操作的方法,或者确认这是不可能的,并且可能将我指向支持上述内容的库?

我正在使用 F# 但这并不重要,因为 F# 与 C#、.NET 和 NuGet 包兼容。

json.net jsonpath

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

如何使用makefile将.o和.exe文件放在/ build /目录中

我很难找到关于makefiles的任何信息,这是真正的初学者级别.即使是问题,这里的问题也是使用一些我不理解的符号来呈现的$(CC) $(INC) $< $(CFLAGS) -o $(BIN)$@ $(LIBS).那让我失望了.

我的makefile看起来像这样:

cpptest: main.o
    g++ -o cpptest main.o

main.o: main.cpp
    g++ -c main.cpp

clean:
    rm cpptest main.o
Run Code Online (Sandbox Code Playgroud)

这是我知道如何处理makefile的全部限制.它可以工作,但将main.o和cpptest.exe文件放入项目根目录.

我想将main.o文件和cpptest.exe文件放入/ build /目录.但是,如果我./build/在每个main.o和每个cpptest之前放置,则目标文件将出现在项目根目录中,并且exe文件根本不会出现.

我正在使用Windows上的Sublime Text 3来构建这个东西,这是值得的.

makefile g++

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

使用C++,SDL,OpenGL和GLEW时出现无法解释的内存错误

这是我的整个应用程序(简要介绍):

#include <stdio.h>
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>
#include <gl/glu.h>

int main( int argc, char* args[] )
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Window* gWindow = SDL_CreateWindow( "title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
    SDL_GLContext gContext = SDL_GL_CreateContext( gWindow );
    glewInit();

    GLfloat *floatArray = new GLfloat(108);
    floatArray[107] = 0.0f;

    GLuint glBuffer;
    glGenBuffers(1, &glBuffer);

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

这和所需的库都在Visual Studio 2012中编译.

这段代码以正确的顺序初始化了OpenGL上下文所需的所有系统,并且在我看到的时候没有遗漏任何东西(只有在断点之后才需要清理,所以我把它拿出来).

它打破了行glGenBuffers(1, &glBuffer);,错误"SOFT323_vs11_2012.exe触发了断点".

需要设置一个元素floatArray[9]才能打破它.

我该如何处理这个问题?它是其中一个库的故障还是我错误地使用它们?

c++ opengl glew sdl visual-studio-2012

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