小编Ale*_*lex的帖子

什么是使用stl-containers查找序列的k-maximal元素的最快算法

我需要使用c ++任何stl-containers来查找序列的k-maximal元素的最快算法. 我的想法:使用列表或向量,对它们进行排序,获得第一个k元素.在这种情况下,操作数等于n*log(n).n - 元素数量.但我认为这不是最好的.

c++ algorithm stl

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

来自C#代码的dll函数调用期间出错

我用c ++创建了dll,想用c#调用它的函数.我有一个错误,如果函数,程序调用,返回字符串. Dll代码:

#include <string>
using namespace std;
#define EXPORT_API extern "C" __declspec(dllexport) 
EXPORT_API  void DllFunc()
{
    MessageBoxA(0,"DDL box", "Yeah!", 0);
}

EXPORT_API  string DllFuncStr()
{
    return "testStr";
}
Run Code Online (Sandbox Code Playgroud)

C#应用程序代码:

[DllImport("dllka.dll")]
 static extern void DllFunc();
[DllImport("dllka.dll")]
static extern string DllFuncStr();

 private void btnStart_Click(object sender, RoutedEventArgs e)
 {
     DllFunc();
     string str = DllFuncStr();           
 }
Run Code Online (Sandbox Code Playgroud)

"DllFunc();" - 效果不错,但在线"string str = DllFuncStr();" 我有一个错误:

运行时遇到了致命错误.错误的地址位于0x5e6dceca,位于线程0x16b0上.错误代码是0xc0000005.此错误可能是CLR中的错误,也可能是用户代码的不安全或不可验证部分中的错误.此错误的常见来源包括COM-interop或PInvoke的用户编组错误,这可能会破坏堆栈.

字符串类型有什么问题?如何解决这个问题?

c# c++ pinvoke

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

标签 统计

c++ ×2

algorithm ×1

c# ×1

pinvoke ×1

stl ×1