我通过http://www.blackbeltcoder.com/Articles/algorithms/creating-a-sparse-matrix-in-net找到了一个非常好的 C# 稀疏矩阵实现。
但当我在 3d 坐标系中工作时,我需要一个稀疏矩阵实现,我可以用它来映射 3d 坐标系。
详细信息:我在内存中存储大量原始形状数据,例如立方体。我确实有大量的条目(大约 3000 万个),并且有很多空(零)条目。鉴于我的每个条目花费 1 个字节的条目,我想实现一个稀疏矩阵,这样我就可以相当节省内存空间。
注意:快速访问矩阵单元对我来说是一个相当重要的因素,因此我会牺牲速度与内存消耗。
我想创建一个可以在我的C#应用程序和扩展之间进行通信的桥.
以下是我真正想要的解释:我创建了一个扩展,它将获取HTML元素的详细信息.
但每次启动Chrome时都会启动.有没有什么方法可以向Chrome扩展程序发送消息以获取HTML元素详细信息,然后将其发送回C#应用程序?
我可以使用'XMLHttpRequest'将信息传递给C#,但问题是,当我的页面被加载时它就开始了.
让我向你解释我想要的东西:
当我打开我的chrome时,我的扩展程序将自动启动,并且我的background.cs(后台页面)也会启动.(这里我想要一些客户端 - 服务器类的通信)
使用我的C#应用程序,我将一些数据发送到chrome扩展(例如StartFetchingDocument)
一旦我的扩展获得此消息(即StartFetchingDocument),那么我的扩展应该将contect-sctipt.js注入选定的选项卡.
我知道将数据发送回C#需要的其余部分,但是在这一阶段我只是陷入困境 - 如何将数据从C#发送到我的扩展(后台页面).
使用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)
但我对如何脱离它感到茫然......
我有一些使用大整数文字的代码,如下所示:
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.cpp给test.cpp:6:20: warning: use of …
我刚刚完成了从 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)
我没有找到任何例子或建议来实现这个要求。
我正在编写一个相当小的跨平台程序,它使用 OpenGL 进行显示,使用 GLFW 进行跨平台窗口创建。
在某些情况下,我想在退出时向用户弹出一条有意义的错误消息 - 一个简单的“错误:由于 n 无法初始化”弹出消息,退出前带有“确定”单击框。
我真的不希望添加一个功能齐全的 gui 系统(例如 wxWidgets)只是为了弹出一个错误消息而膨胀。如果使用本机平台 API 确实是最简单的方法,我不介意编写三个不同的平台相关子例程,但我想知道是否已经有一个非常轻量级/最小的跨平台库能够为我做到这一点?
我有一个使用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文档我找到了两个访问地图元素的函数:
他们都不满足我的需要.
如果我只想将一个值从一个单位转换为另一个单位,那么最简单(理想情况是一行)的方法是什么?
例如,我想以米为单位存储一个值,但以英里为单位指定.
大多数执行此操作的示例似乎是多行,涉及typedef和单位定义,并且不提供简单的无单位输出.
c++ ×6
c# ×2
3d ×1
boost ×1
boost-units ×1
c++11 ×1
c++14 ×1
emscripten ×1
gcc ×1
gcc-warning ×1
long-long ×1
optional ×1
popup ×1
stdmap ×1
webassembly ×1