小编Rio*_*iot的帖子

3D稀疏矩阵实现?

我通过http://www.blackbeltcoder.com/Articles/algorithms/creating-a-sparse-matrix-in-net找到了一个非常好的 C# 稀疏矩阵实现。

但当我在 3d 坐标系中工作时,我需要一个稀疏矩阵实现,我可以用它来映射 3d 坐标系。

详细信息:我在内存中存储大量原始形状数据,例如立方体。我确实有大量的条目(大约 3000 万个),并且有很多空(零)条目。鉴于我的每个条目花费 1 个字节的条目,我想实现一个稀疏矩阵,这样我就可以相当节省内存空间。

注意:快速访问矩阵单元对我来说是一个相当重要的因素,因此我会牺牲速度与内存消耗。

c# 3d sparse-matrix

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

如何使用C#与Chrome(Chrome扩展程序)进行通信?

我想创建一个可以在我的C#应用​​程序和扩展之间进行通信的桥.
以下是我真正想要的解释:我创建了一个扩展,它将获取HTML元素的详细信息.
但每次启动Chrome时都会启动.有没有什么方法可以向Chrome扩展程序发送消息以获取HTML元素详细信息,然后将其发送回C#应用程序?

我可以使用'XMLHttpRequest'将信息传递给C#,但问题是,当我的页面被加载时它就开始了.

让我向你解释我想要的东西:

  1. 当我打开我的chrome时,我的扩展程序将自动启动,并且我的background.cs(后台页面)也会启动.(这里我想要一些客户端 - 服务器类的通信)

  2. 使用我的C#应用​​程序,我将一些数据发送到chrome扩展(例如StartFetchingDocument)

  3. 一旦我的扩展获得此消息(即StartFetchingDocument),那么我的扩展应该将contect-sctipt.js注入选定的选项卡.

我知道将数据发送回C#需要的其余部分,但是在这一阶段我只是陷入困境 - 如何将数据从C#发送到我的扩展(后台页面).

c# google-chrome communication

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

如何解除std :: experimental :: optional?

使用Boost,我可以创建一个可选的就地:

boost::optional<boost::asio::io_service::work> work = boost::in_place(boost::ref(io_service));
Run Code Online (Sandbox Code Playgroud)

并解除它:

work = boost::none;
Run Code Online (Sandbox Code Playgroud)

有了C++ 14 /实验支持,我可以使用以下方法构建一个可选的就地:

std::experimental::optional<boost::asio::io_service::work> work;
work.emplace(boost::asio::io_service::work(io_service));
Run Code Online (Sandbox Code Playgroud)

但我对如何脱离它感到茫然......

c++ optional boost-optional c++14

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

如何从GCC中消除长整数常数警告

我有一些使用大整数文字的代码,如下所示:

if(nanoseconds < 1'000'000'000'000)
Run Code Online (Sandbox Code Playgroud)

这给编译器警告integer constant is too large for 'long' type [-Wlong-long].但是,如果我将其更改为:

if(nanoseconds < 1'000'000'000'000ll)
Run Code Online (Sandbox Code Playgroud)

......我反而得到了警告use of C++11 long long integer constant [-Wlong-long].

我想为此行禁用此警告,但不禁用-Wlong-long或使用-Wno-long-long进行整个项目.我试过围绕它:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wlong-long"
...
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)

但这似乎不适用于此警告.我还能尝试别的吗?

我正在建设-std=gnu++1z.

编辑:评论的最小示例:

#include <iostream>
auto main()->int {
  double nanoseconds = 10.0;
  if(nanoseconds < 1'000'000'000'000ll) {
    std::cout << "hello" << std::endl;
  }
  return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

建筑用g++ -std=gnu++1z -Wlong-long test.cpptest.cpp:6:20: warning: use of …

c++ gcc gcc-warning long-long c++11

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

如何使用 EM_JS 从 C++ 调用带参数的 javascript 方法

我刚刚完成了从 C/C++ 调用 JavaScript并按照他们的说明进行操作。我可以从 C++ 调用 Js 方法

C++

#include <iostream>
#include <string>

#include <emscripten.h>
#include <emscripten/bind.h>

EM_JS(void, call_js, (), {
    jsMethod();
});

bool callJsBack()
{
    call_js();
    return true;
}

EMSCRIPTEN_BINDINGS(module)
{
    emscripten::function("callJsBack", &callJsBack);
}
Run Code Online (Sandbox Code Playgroud)

杰斯

<script>
    var Module = {
        onRuntimeInitialized: function() {
            console.log('Module.callJsBack(): ' + Module.callJsBack());
        }
    };

    function jsMethod() {
        alert('I am a js method!');
    }
 </script>
Run Code Online (Sandbox Code Playgroud)

我想让 jsMethod() 参数化(想要在调用 jsMethod() 时从 C++ 传递字符串)。

function jsMethod(msg) {
    alert(msg);
}
Run Code Online (Sandbox Code Playgroud)

我没有找到任何例子或建议来实现这个要求。

c++ emscripten webassembly

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

在 windows、nix 和 macos 上弹出错误消息框的最简单方法?

我正在编写一个相当小的跨平台程序,它使用 OpenGL 进行显示,使用 GLFW 进行跨平台窗口创建。

在某些情况下,我想在退出时向用户弹出一条有意义的错误消息 - 一个简单的“错误:由于 n 无法初始化”弹出消息,退出前带有“确定”单击框。

我真的不希望添加一个功能齐全的 gui 系统(例如 wxWidgets)只是为了弹出一个错误消息而膨胀。如果使用本机平台 API 确实是最简单的方法,我不介意编写三个不同的平台相关子例程,但我想知道是否已经有一个非常轻量级/最小的跨平台库能够为我做到这一点?

c++ user-interface cross-platform popup

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

std :: map - 无异常且无插入的元素访问

我有一个使用std :: map的循环模式.

我只想在键存在时检索值,否则我不想插入元素.目前我正在使用count(key)find(key)(哪一个更好?从文档中复杂性似乎是相同的),如果它们返回一个正值,我访问地图.但是我想避免在地图上使用两个操作.就像是:

map<string, int> myMap;
int returnvalue;
boole result = myMap.get("key1",returnValue)
if(result){
  \\ use returnValue
}
Run Code Online (Sandbox Code Playgroud)

阅读cplusplus.com上的std :: map文档我找到了两个访问地图元素的函数:

  • at():如果密钥不存在则抛出一个excpetion
  • []:如果密钥不存在,则插入新值

他们都不满足我的需要.

c++ stdmap

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

用Boost :: units转换两个量的最简单方法是什么?

如果我只想将一个值从一个单位转换为另一个单位,那么最简单(理想情况是一行)的方法是什么?

例如,我想以米为单位存储一个值,但以英里为单位指定.

大多数执行此操作的示例似乎是多行,涉及typedef和单位定义,并且不提供简单的无单位输出.

c++ boost boost-units

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