小编Tom*_*icz的帖子

最快的C++地图?

纠正我我错了,但是std :: map是一个有序的映射,因此每次插入一个值时,map都会使用算法在内部对其项进行排序,这需要一些时间.

我的应用程序以恒定间隔获取有关某些项目的信息.

这个应用程序保留一个定义如下的地图:

::std::map<DWORD, myItem*>
Run Code Online (Sandbox Code Playgroud)

首先,所有项目都被视为应用程序的"新"项.正在分配"Item"对象并将其添加到此映射,将其id和指向它的指针相关联.

如果它不是"新"项(只是对象的更新),我的应用程序应该使用给定的id在地图上找到对象并更新.

大多数时候我都会得到更新.

我的问题是:
是否有更快的地图实施或我应该继续使用这个?
我最好使用unordered_map吗?

c++ performance map data-structures

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

明确实现IDisposable

虽然IDisposable在SO上有相当多的问答,但我还没有找到答案:

我通常遵循这样的做法:当我的一个类拥有一个IDisposable对象时,它也实现IDisposable并调用Dispose拥有的对象.但是最近我遇到了一个IDisposable明确实现的类,因此阻止我直接Dispose强制我强制转换它,我觉得这很烦人且没必要.

所以问题是:为什么以及何时想要使用显式接口实现IDisposable?我知道明确地实现接口有完全正确和有效的理由但是对于IDisposable我来说不明确的原因.

.net c# idisposable explicit-interface

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

无法推送到git Repository.它在"写物体:100%"之后挂起

我正在使用以下命令运行git守护程序.

c:\cygwin\bin\git daemon --reuseaddr --base-path=/cygdrive/S --export-all --verbose --enable=receive-pack
Run Code Online (Sandbox Code Playgroud)

我能够克隆并提取更新,但是当我尝试推送时,我得到了

$ git push origin master

Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6)
Run Code Online (Sandbox Code Playgroud)

然后它挂了

我目前正在使用git版本1.7.0.4

git cygwin git-pull git-push git-daemon

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

如何使用自动生成的标识密钥更新数据集父子表?

我在VB应用程序中使用ADO.NET数据集.我有一个带有一个父表和许多子表的类型化数据集.我想在将数据插入父表时生成身份密钥,然后使用相同的密钥(作为Foregin密钥)更新所有子表中的数据.

最后,我想更新数据库(SQL Server08)中的数据集.

好吧,首先可以通过直接在数据库中插入父表,获取Identity列而不是用于Child表来实现上述功能.

但是我想将它作为一个自动操作(就像LINQ to SQL一样,它在datacontext中处理主键和外键.)

我在Dataset中可能会为父表和子表处理Autogenerated列吗?

谢谢,

ABB

.net vb.net ado.net dataset

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

我应该绑定什么数据类型作为查询参数与 Oracle ODBC 中的 NUMBER(15) 列一起使用?

我刚刚被 SO 问题Binding int64 (SQL_BIGINT) as query parameter cause error during execution in Oracle 10g ODBC 中描述的问题所困扰

我正在将使用 ODBC 2 的 C/C++ 应用程序从 SQL Server 移植到 Oracle。对于超过 NUMBER(9) 的数字字段,它使用 __int64 数据类型,该数据类型作为 SQL_C_SBIGINT 绑定到查询。显然,Oracle ODBC 不支持这种绑定。我现在必须将应用程序范围转换为另一种方法。由于我没有太多时间---这是一个意想不到的问题---我宁愿使用经过验证的解决方案,而不是反复试验。

在 Oracle 中应该使用什么数据类型绑定为例如 NUMBER(15)?是否有记录在案的推荐解决方案?你在用什么?有什么建议?

我对不需要任何额外转换的解决方案特别感兴趣。我可以轻松地以 __int64 或 char* 的形式提供和使用数字(没有千位分隔符或小数点的正常非指数形式)。任何其他格式都需要我进行额外的转换。


到目前为止我尝试过的:

SQL_C_CHAR

看起来它对我有用。我担心数字格式的可变性。但在我的用例中,这似乎无关紧要。显然只有分数点字符会随着系统语言设置而变化。

而且我不明白为什么我应该在 SQL INSERT 或 UPDATE 命令中使用显式转换(例如 TO_NUMERIC)。当我将参数与 SQL_C_CHAR 作为 C 类型和 SQL_NUMERIC(具有适当的精度和比例)作为 SQL 类型绑定时,一切正常。我无法重现任何数据损坏效果。

SQL_NUMERIC_STRUCT

我注意到 SQL_NUMERIC_STRUCT 添加了 ODBC 3.0 并决定尝试一下。我很失望。

在我的情况下就足够了,因为应用程序并没有真正使用小数。但作为一般解决方案......简单地说,我不明白。我的意思是,我终于明白它应该如何使用了。我不明白的是:为什么有人会引入这种新结构,然后让它以这种方式工作

SQL_NUMERIC_STRUCT 具有表示任何 …

c oracle odbc

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

将 int64 (SQL_BIGINT) 绑定为查询参数会导致在 Oracle 10g ODBC 中执行期间出错

我在 Oracle 10g 上使用 ODBC 3.0 插入到表中,但失败了,我不知道为什么。数据库在 Windows Server 2003 上。客户端在 Windows XP 上。

桌子:

CREATE TABLE test ( testcol NUMBER(20,0) NULL );
Run Code Online (Sandbox Code Playgroud)

ODBC 调用:

SQLAllocHandle(SQL_HANDLE_STMT) = SQL_SUCCESS
SQLPrepare(INSERT INTO test (testcol) VALUES (?);) = SQL_SUCCESS

SQLINTEGER nStrLen = 0;
__int64 nInt64 = 99;
SQLBindParameter(hStatement, 1, SQL_PARAM_INPUT, 
    SQL_C_SBIGINT, SQL_BIGINT, 20, 0, &nInt64, 0, &nStrLen) = SQL_SUCCESS

SQLExecute() = SQL_ERROR
SQLGetDiagRec(1) = SQL_NO_DATA
Run Code Online (Sandbox Code Playgroud)

SQLBindParameter成功但随后SQLExecute失败。没有诊断消息。

我不得不求助于将 int64 写入字符串并将其绑定为字符串。这是绑定 int64 的唯一方法吗?

oracle odbc oracle10g

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

你能用c ++隐藏虚拟方法吗?

我有一个带虚函数的基类.

virtual CString& Foo();
Run Code Online (Sandbox Code Playgroud)

我想在子类中重载这个,就像这样

CString Foo();
Run Code Online (Sandbox Code Playgroud)

有没有办法隐藏基类的虚函数?像vb.net或C#中的new关键字

c++ visual-c++

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

git push,源代码隐藏在哪里?

我试图在我的ror应用程序的同一台机器上设置git服务器和部署服务器.我使用以下命令将项目从本地计算机推送到git服务器/部署服务器:

git remote add origin path_to_git_server
git push origin master
Run Code Online (Sandbox Code Playgroud)

然后,在git服务器上,我找到了"master"文件~/git/log.git/ref/heads,但是我找不到所有的源代码.我需要指向源文件夹,以便它可以在Apache Web服务器上运行.我在这做错了什么?谢谢.

git

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