我试图在C中创建一个通用哈希表。我已经阅读了几种不同的实现,并遇到了几种不同的方法。
首先是使用像这样的宏:http : //attractivechaos.awardspace.com/khash.h.html
第二种是使用带有2个void指针的结构,如下所示:
struct hashmap_entry
{
void *key;
void *value;
};
Run Code Online (Sandbox Code Playgroud)
据我所知,这种方法并不是很好,因为它意味着映射中的每个条目都至少需要2种分配:一种分配给键,一种分配给值,而与存储的数据类型无关。(那正确吗???)
如果没有采用宏路由,就无法找到一种使它通用的不错的方法。有人有任何提示或示例可以帮助我吗?
在下面的小样本中:
#include<iostream>
using namespace std;
int z(){
return 5 + 10; // returns 15
}
int main(){
z(); // what happens to this return?
cout << "Did not fail";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
15岁会怎么样?我尝试在调试器中运行它,但我无法在任何地方找到它.我认为,因为它没有被分配到任何东西它只是消失但我觉得这是错的.
今天我向TA询问了这个问题,他告诉我它存储在调用堆栈中,但是当我在调试器中查看它时,我发现它不是.
是否可以监听某个热键(例如:Ctrl-I)然后执行特定操作?我的应用程序是用 C 编写的,只能在 Linux 上运行,并且没有 GUI。有没有任何库可以帮助完成此类任务?
编辑:例如,amarok 具有全局快捷键,因此,例如,如果您将按键组合映射到一个操作(比方说Ctrl-+、Ctrl和+),您可以在按下按键时执行该操作。如果我要映射Ctrl-+到音量增加操作,则每次按下时ctrl-+音量都会增加一定的量。
谢谢
是否.css总是需要文件?或者我可以有一个.css"基本"文件并在HTML页面中定义其他样式项?
不padding,borders等等总是有一个被定义.css的,单独存储文件,或者我可以再嵌入到HTML页面?
任何人都可以解释这个
"A using-declaration in a derived class cannot refer to a specialization
of a template conversion function in a base class."
Run Code Online (Sandbox Code Playgroud)
它来自ISO C++标准.14.5.2,第7点
template <bool flag>
class foo
{
public:
int bar()
{
if(flag)
{
// stuff
}
}
};
Run Code Online (Sandbox Code Playgroud)
当编译器编译此类时,它会将flag参数替换为true或false.然后我们有if(true)(或者if(false)).然后,if子句检查常量表达式并在编译时将被删除.我能指望编译器表现得像这样吗?
我有一个WCF客户端,我遇到了问题.
我不时会遇到这个例外:Cannot access a disposed object.这就是我打开连接的方式:
private static LeverateCrmServiceClient crm = null;
public static CrmServiceClient Get(string crmCertificateName)
{
if (crm != null)
{
crm.Close();
}
try
{
crm = new LeverateCrmServiceClient("CrmServiceEndpoint");
crm.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.My,
X509FindType.FindBySubjectName,
crmCertificateName);
}
catch (Exception e)
{
log.Error("Cannot access CRM ", e);
throw;
}
return crm;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我每次都关闭并重新打开连接.您认为可能是什么问题?
堆:
System.ServiceModel.Security.MessageSecurityException: Message security verification failed. ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'System.ServiceModel.Security.SymmetricSecurityProtocol'.
at System.ServiceModel.Channels.CommunicationObject.ThrowIfClosedOrNotOpen()
at System.ServiceModel.Security.MessageSecurityProtocol.VerifyIncomingMessage(Message& message, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)
--- …Run Code Online (Sandbox Code Playgroud) 我正在研究malloc我的作业的实施.
我知道有一些版本的malloc实现,比如glibc使用的ptmalloc和FreeBSD使用的jemalloc.
我想知道Visual C++采用哪种版本的实现?或者VC++团队刚刚实现了自己的版本?
我正在尝试使用参数作为全局实现operator new.如果没有args的new被重载没有问题,但是在尝试编译时我遇到了以下错误
inline void* operator new(size_t, void* p) {
//...
return p;
}
Run Code Online (Sandbox Code Playgroud)
c:\ bjarne_exercise_6.cpp(14):错误C2084:函数'void*operator new(size_t,void*)throw()'已经有一个正文c:\ program files\microsoft visual studio 10.0\vc\include \new( 55):看看'new'的先前定义
c:\ bjarne_exercise_6.cpp(40):错误C2264:'operator new':函数定义或声明中的错误; 功能未被调用
我刚刚解决了这个问题,你必须在#include stdafx.h之前声明这个.不,不是真的.它编译得很好,但仍然没有调用此函数,但是来自新头文件的版本.是这样,因为新标题中已经定义了新的(有2个参数).普通的new(只有1,size_t参数)只在那里声明,所以你仍然可以重载它.因此,如果你想要带有多个参数的特殊new,下面的@trion建议的解决方案是合适的.
我正在尝试在C程序中计算以下数字:
result = (3 * pow(2,500000000) - 2 ) % 1000000000
Run Code Online (Sandbox Code Playgroud)
2的力量是大到正确处理的方式=>我的印象是我可以使用模数在许多步骤中拆分计算以减小结果大小.有人有这样做的策略吗?还有其他想法吗?
Thanx提前
马努