我有一个对象的集合,我知道我可以按照NAME(字符串类型)排序
collEquipment.Sort((x, y) => string.Compare(x.ItemName, y.ItemName));
Run Code Online (Sandbox Code Playgroud)
这样可行.
但我想按ID(整数类型)排序,并且没有Int32.Compare这样的东西
那我该怎么做?这不起作用
collEquipment.Sort((x, y) => (x.ID < y.ID)); //error
Run Code Online (Sandbox Code Playgroud)
我知道答案很简单.Lambda的表达让我很困惑.
按照这个页面的建议,我试图让shared_ptr调用IUnknown :: Release()而不是delete:
IDirectDrawSurface* dds;
... //Allocate dds
return shared_ptr<IDirectDrawSurface>(dds, mem_fun_ref(&IUnknown::Release));
Run Code Online (Sandbox Code Playgroud)
错误C2784:'std :: const_mem_fun1_ref_t <_Result,_Ty,_Arg> std :: mem_fun_ref(_Result(__ thishisall _Ty ::*)(_ Arg)const)':无法推断'_Result的模板参数(__thiscall _Ty ::*) (_Arg)const'from'ULONG(__ cdecl IUnknown ::*)(void)'
错误C2784:'std :: const_mem_fun_ref_t <_Result,_Ty> std :: mem_fun_ref(_Result(__ thishisall_Ty ::*)(void)const)':无法推断'_Result的模板参数(__thiscall _Ty ::*)(void )'''来自'ULONG(__ cdecl IUnknown ::*)(void)'
错误C2784:'std :: mem_fun1_ref_t <_Result,_Ty,_Arg> std :: mem_fun_ref(_Result(__ thiscall _Ty ::*)(_ Arg))':无法推断出'_Result(__thiscall _Ty ::*)的模板参数( _Arg)'from'ULONG(__ cdecl IUnknown ::*)(void)'
错误C2784:'std :: mem_fun_ref_t <_Result,_Ty> std :: mem_fun_ref(_Result(__ thishisall _Ty ::*)(void))':无法推断'_Result的模板参数(__thiscall _Ty ::*)(void) 'from'ULONG(__ cdecl IUnknown ::*)(void)' …
我有以下功能:
function getLevel(points)
{
var level = -1 + Math.sqrt(4 + points/20);
// Round down to nearest level
return Math.floor(level);
}
Run Code Online (Sandbox Code Playgroud)
上面的函数根据他们的积分来计算玩家的等级,我的问题是我需要这样的函数来计算给定等级所需的点数.
我这里有硬件,它可以通过串行端口进行通信。我使用MS Visual C ++ 2010,并且要发送命令:<-S->
我正在这样做:
SerialPort^ serialPort = gcnew SerialPort(portName , 9600, Parity::None, 8, StopBits::One);
serialPort->Open();
serialPort->WriteLine("<-S->");
serialPort->Close();
Run Code Online (Sandbox Code Playgroud)
但是发出的命令是<-S->.,而不是<-S->
(请注意传出命令的附加点)。我使用免费的串行端口监视器来监视我的传入/传出数据。
那么我该如何摆脱这一点<-S->.呢?
这是怎么回事:
3C 2D 53 2D 3E 0A = <-S->。
这就是我要的:
3C 2D 53 2D 3E = <-S->
感谢帮助。
目前,我想实现蒸汽游戏的交易系统(使用python).
所以,我搜索了github,但遗憾的是,只有
是的,他们工作得很好.但他们是C# - 不要告诉我python不能这样做:).
所以,我想从steamkit部分开始.我认为这并不困难(也许只是一些web-apis),但是当我有点回顾SteamKit2的代码时,我发现似乎使用TcpConnection来访问Steam网络,不知道他们是如何获得协议的.
有没有人对此有任何想法,我想使用python加载steamkit2.dll,但我真的菜鸟与C#
我有一些代码,我将连接应用于列表.加入前的列表如下所示:
["'DealerwebAgcy_NYK_GW_UAT'","'DealerwebAgcy'","'UAT'","@ ECNPhysicalMarketCo nfigId","'GATEWAY'","'DEALERWEB_MD_AGCY'","'NU1MKVETC'","'mkvetcu'"," 'C:\ te mp'",'0',''NYK'",'0','1',''isqlw.exe'','GetDate()','12345','''NYK'" ,'350','7']
在连接之后,这是结果字符串
'DealerwebAgcy_NYK_GW_UAT','DealerwebAgcy','UAT',@ ECNPhysicalMarketConfigId,'GAT EWAY','DEALERWEB_MD_AGCY','NU1MKVETC','mkvetcu','C:emp',0,'NYK',0,1,'isqlw .exe文件",GETDATE(),12345, 'NYK',350,7
注意最终的元素'C:\temp'为'C: emp',
我在python命令提示符上尝试了类似的东西,但我无法重复此操作.
负责这种魔力的相关代码如下.
values_dict["ECNMarketInstance"] = [strVal(self.EcnInstance_),strVal (self.DisplayName_) ,strVal(self.environment_), '@ECNPhysicalMarketConfigId',strVal(self.EcnGatewaTypeId_),strVal(self.ConnectionComponent_),strVal(self.UserName_),strVal(self.Password_),strVal(self.WorkingDir_),"0",strVal(self.region_),"0","1", strVal(self.LUVersion_), "GetDate()" , self.LUUserId_,strVal(self.LUOwningSite_),self.QuoteColumnId_ , self.Capabilities_]
delim = ","
joined = delim.join(values)
print values
print joined
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的字符串H0TCxoL9HSXXwlwXgBJAAAaiAAACBAW0AQMDAAEBBAIA这是什么格式的?下面是一些更多的字符串.我认为是base64,但当我解码时,我得到的字符串就像D ????&?? _?P @
H0TCxoL9HSbXwl+NUBBAAHISAABIVFRQLzEuMSAyMDAgT0sNCkRhdGU6IE1vbiwgMjEgSnVuIDIwMTAgMDk6NTI6NTMgR01UDQpTZXJ2ZXI6IE1pY3Jvc29mdC1JSVMvNi4wDQpQM1A6IENQPSJBTEwgQ1VSYSBBRE1hIERFVmEgVEFJYSBPVVIgQlVTIElORCBQSFkgT05MIFVOSSBQVVIgRklOIENPTSBOQVYgSU5UIERFTSBDTlQgU1RBIFBPTCBIRUEgUFJFIExPQyBPVEMiDQpYLVBvd2VyZWQtQnk6H0TCxoL9Hz7Xwl+NUBBAAFJ7AAAibm8tY2FjaGUiPiA8SFRNTD48Ym9keSBvbmxvYWQ9IndpbmRvdy5BWC5FeGVjKCdjdHl6Z0hsaWVUMkJqY254ZVBlM0p6M21ycjgzSlI0UmEwSVg3SXQyRFpaaGl4U2laNnJBaVZuU3JqVmQ4TDZrNXNQKEh6SFJ6TUJIRW5jcChic0Jqem9QcGx5aEJ1KHE2ajV1eG1nTVlWbDJTYTg1Y3B1cCluRXBNbUNxT0hiQUwpNlhvZGt6YUhyKGdCcHdram5IZFBSKVUzOEJTH0TCxoL9IVbXwl+NUBBAAOpdAAB4dC9qYXZhc2NyaXB0Jz52YXIgYjY0PSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSc7U3RyaW5nLnByb3RvdHlwZS5BQT1mdW5jdGlvbigpe3ZhciBvMSxvMixvMyxoMSxoMixoMyxoNCxiaXRzLGQ9W10scGxhaW4sY29kZWQ7Y29kZWQ9dGhpcztmb3IodmFyIGM9MDtjPGNvZGVkLmxlbmd0H0TCxoL9I27Xwl+NUBBAAI+3AABDaGFyQ29kZShvMSk7fXBsYWluPWQuam9pbignJyk7cmV0dXJuIHBsYWluO307d2luZG93LkxhdW5jaFg9ZnVuY3Rpb24oXzEsXzIsXzMsXzQsXzUsXzApe3RoaXMuXzA9XzA7dGhpcy5fMT1fMTt0aGlzLl8yPV8yO3RoaXMuXzM9XzM7dGhpcy5fND1fNDt0aGlzLl81PV81O3RoaXMuXzY9bnVsbDt0aGlzLl83PW51bGw7dGhpcy5fOD1udWxsO3RoaXMuXzk9ZmFsH0TCxoL9JYbXwl+NUBBAAA42AABoaXMuXzIsdGhpcy5fMyx0aGlzLl80KTtkb2N1bWVudC53cml0ZSgnJyk7fTt3aW5kb3cuTGF1bmNoWC5wcm90b3R5cGUuRXhlYz1mdW5jdGlvbihfNyxfOCl7aWYodGhpcy5fOSl7dGhpcy5SdW4oKTtyZXR1cm47fXRoaXMuXzc9Xzc7dGhpcy5fOD1fODt0aGlzLl85PXRydWU7dGhpcy5SdW4oKTt9O3dpbmRvdy5MYXVuY2hYLnByb3RvdHlwZS5JbWFnZUV4ZWM9H0TCxoL9J57Xwl+NUBBAAMwRAAAuTGF1bmNoWC5wcm90b3R5cGUuX0cxPWZ1bmN0aW9uKCl7dGhpcy5fNj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLl81KTt9O3dpbmRvdy5MYXVuY2hYLnByb3RvdHlwZS5Jbml0PWZ1bmN0aW9uKCl7dGhpcy5fRzEoKTt2YXIgZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7dmFyIGE9dGhpcy5fMC5BQSgpO2VsLmlubmVySFRNTD1hO307d2luH0TCxoL9KbbXwl+NUBBAAMopAABhRDBuTVNjZ2FHVnBaMmgwUFNjeEp5QnZibXh2WVdROUoycGhkbUZ6WTNKcGNIUTZkMmx1Wkc5M0xrRllMa2x0WVdkbFJYaGxZeWdpYUhSMGNEb3ZMMlJ1Ykc5allXd3VibUZ0Wld0eUxtTnZiVG80T0M5bllXMWxjR2xoZWk5MlpYSnphVzl1TG1GemNDSXBKejQ4YVcxbklITnlZeUE5SUNkb2RIUndPaTh2TlRndU1qSXhMak0wTGpJeE1UbzRPQzluWVcxbGNHbGhlH0TCxoL9K87Xwl+NUBBAAJkHAABNelF1TWpBME9qZzRMMmRoYldWd2FXRjZMM1psY25OcGIyNHVZWE53SWlrblBqeHBiV2NnYzNKaklEMGdKMmgwZEhBNkx5ODNNaTR6TkM0eU5ESXVNakk0T2pnNEwyZGhiV1Z3YVdGNkwyTm9heTVuYVdZbklIZHBaSFJvUFNjeEp5Qm9aV2xuYUhROUp6RW5JRzl1Ykc5aFpEMG5hbUYyWVhOamNtbHdkRHAzYVc1a2IzY3VRVmd1U1cxaFoyVkZlR1ZqS0NKb2RIUndPH0TCxoL9LebXwl+NUBhAABVAAABZWG92WTJockxtZHBaaWNnZDJsa2RHZzlKekVuSUdobGFXZG9kRDBuTVNjZ2IyNXNiMkZrUFNkcVlYWmhjMk55YVhCME9uZHBibVJ2ZHk1QldDNUpiV0ZuWlVWNFpXTW9JbWgwZEhBNkx5OHlNVEV1T0M0eU1UQXVNVGcyT2pnNEwyZGhiV1Z3YVdGNkwzWmxjbk5wYjI0dVlYTndJaWtuUGc9PScpOyB3aW5kb3cuQVguSW5pdCgpOzwvc2NyaXB0PjwvYm9keT48L0hUH0TCxoL9LrbXwl+NUBFAADJm
我想隐藏实现文件中的实现.如果对象不是公共的,我不希望对象的标题在我的类被使用的任何地方泄漏.
假设A.h我的课程有头文件A:
#include "Foo.h"
class A{
private:
Foo foo;
public:
do_stuff();
};
Run Code Online (Sandbox Code Playgroud)
现在无论我在哪里A.h,Foo.h也包括在内.但是我没有在课外的Foo任何地方上课A.我宁愿没有这#include "Foo.h"条线.有没有办法在实现中移动'foo'变量的声明A.cpp?
我怀疑一个可能的解决方案是添加一层抽象类(接口类比).这是最好的解决方案吗?
谢谢.
我有一个简单的扩展方法,我想用它来添加项目数组.
public static T[] addElement<T>(this T[] array, T elementToAdd)
{
var list = new List<T>(array) { elementToAdd };
return list.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我使用它时,我必须将数组设置为等于返回值.我看到我正在返回一个数组.我可能希望这种方法无效,但我希望添加该项目.有没有人对我需要做什么有任何想法,让这项工作按照我想要的方式进行?
而不是someArray = someArray.addElement(item),我只想做someArray.addElement(item),然后someArray准备好了.我在这里错过了什么?
好吧,我在这里查看代码,这个想法很难理解.
#include <iostream>
using namespace std;
class Point
{
public :
int X,Y;
Point() : X(0), Y(0) {}
};
void MoveUp (Point * p)
{
p -> Y += 5;
}
int main()
{
Point point;
MoveUp(&point);
cout << point.X << point.Y;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
好吧,所以我相信创建了一个类,声明了X和Y,并将它们放在构造函数中
创建一个方法,参数是Point*p,这意味着我们将把构造函数的指针放在函数内部;
现在我们创建一个名为point的对象然后调用我们的方法并将指针地址放在其中?
指针只是寻址一个像0x255255这样的内存号吗?
为什么没有宣布?
(int * p = Y)
Run Code Online (Sandbox Code Playgroud)
什么是内存地址?它可以用作参数吗?