问题列表 - 第36661页

定义和初始化多维数组时出错

我在使用以下定义进行编译时遇到错误.

int  matrix[ ][ ] = { { 1, 2, 3}, {4,5,6} };

char str[ ][ ] = { "abc", "fgh" };
Run Code Online (Sandbox Code Playgroud)

为什么编译器抱怨缺少下标和太多的初始化器.

c++ initialization definition multidimensional-array

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

解雇/演示模态视图控制器 - 内存?

当您解除模态视图控制器时,该视图控制器对象是否被销毁?

此外,如果您再次表示相同的视图控制器,它会从新加载 - 例如,"视图是否已加载"和"init"方法被调用?

iphone objective-c uiviewcontroller

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

如何折叠STL容器?

我需要一个Haskell foldl函数的模拟来折叠任何STL容器.预期签名如下:

template Iterator, FoldingFunction, Result
Result foldl(
  Iterator begin, 
  Iterator end, 
  FoldingFunction f, 
  Result initValue);
Run Code Online (Sandbox Code Playgroud)

标准STL没有这样的功能.是否加速有什么?

我知道它实现起来非常简单,但我想知道是否有任何现成的标准化实现.

还有一个问题:你通常如何在C++/STL中折叠数据列表?

c++ boost stl fold

26
推荐指数
2
解决办法
9545
查看次数

主键中允许NULL - 为什么以及在哪个DBMS中?

继我的问题"为什么在TSQL中使用'not null primary key'?" ...

正如我从其他讨论中所理解的,一些RDBMS(例如SQLite, MySQL的)允许主键中的"唯一"NULL.

为什么允许这样做以及它有何用处?

背景:我认为与同事和数据库专业人员进行沟通有助于了解不同DBMS中基本概念,方法及其实现的差异.

笔记

  • MySQL被修复并返回到"NOT NULL PK"列表.
  • SQLite已被添加(感谢Paul Hadfield)到"NULL PK"列表:

为了确定主键值的唯一性,NULL值被认为与所有其他值不同,包括其他NULL.

如果INSERT或UPDATE语句尝试修改表内容,以便两个或多个行具有相同的主键值,则会违反约束.根据SQL标准,PRIMARY KEY应始终表示NOT NULL.不幸的是,由于长期的编码监督,在SQLite中并非如此.

除非列是INTEGER PRIMARY KEY,否则SQLite允许在PRIMARY KEY列中使用NULL值.我们可以改变SQLite以符合标准(我们将来可能会这样做),但是当发现疏忽时,SQLite的使用范围很广,如果我们解决问题,我们担心会破坏遗留代码.

所以现在我们已经选择在PRIMARY KEY列中继续允许NULL.但是,开发人员应该意识到,我们可能会在未来更改SQLite以符合SQL标准,并应相应地设计新程序.

- SQLite理解的SQL:CREATE TABLE

database database-design terminology relational-database

19
推荐指数
4
解决办法
3万
查看次数

如何按标题自动排序方法?

以与.cpp文件相同的顺序对头文件中的方法进行排序是一种很好的方式,但通常这个顺序在开发过程中会变得粗糙.

如何将cpp文件中的方法重新排序为头文件中给出的顺序?

c++ header code-structure

18
推荐指数
1
解决办法
1956
查看次数

使用.NET中的CultureInfo访问资源字符串

另一个简单问题.我有不同语言的网站.如果我想从资源文件中访问一个字符串,我会像这样使用它

Resources.MyResourceFile.MyStringIdentifier
Run Code Online (Sandbox Code Playgroud)

很容易.这样我在编译期间就知道资源字符串存在.

现在,只有当我想使用当前的文化时,这才有效.有时我需要指定一种特定的文化(假设当前用户使用德语作为语言,但他的操作会触发将消息发送给其他用户,这些用户将使用收件人的语言).现在,我看到两个选择:

Resources.MyResourceFile.ResourceManager.GetString("MyStringIdentifier", neededCulturInfo)
Run Code Online (Sandbox Code Playgroud)

另一个是改变当前线程的文化信息,我需要做几次.

还有第三种方式吗?在编译时告诉我资源存在但不需要一直改变线程文化的东西?

asp.net resources cultureinfo internationalization currentuiculture

10
推荐指数
1
解决办法
1825
查看次数

如何比使用DynamicInvoke更快地调用委托?

目前我用DynamicInvoke的很慢.仍然使用Delegate类型我怎么能直接调用Delegate没有后期绑定/ DynamicInvoke

Delegate _method;    
_method.DynamicInvoke(_args);
Run Code Online (Sandbox Code Playgroud)

谢谢.

.net c# delegates .net-3.5

7
推荐指数
1
解决办法
4162
查看次数

如何在Clojure中生成memoized递归函数?

我正在尝试编写一个在Clojure中返回memoized递归函数的函数,但是我在使递归函数看到它自己的memoized绑定时遇到了麻烦.这是因为没有创建var吗?另外,为什么我不能在用let创建的本地绑定上使用memoize?

这个稍微不同寻常的Fibonacci序列制作者从一个特定的数字开始就是我希望我能做的一个例子:

(defn make-fibo [y]
  (memoize (fn fib [x] (if (< x 2)
             y
             (+ (fib (- x 1))
                (fib (- x 2)))))))

(let [f (make-fibo 1)]
  (f 35)) ;; SLOW, not actually memoized
Run Code Online (Sandbox Code Playgroud)

使用with-local-vars似乎是正确的方法,但它对我也不起作用.我想我不能关闭vars?

(defn make-fibo [y]
  (with-local-vars [fib (fn [x] (if (< x 2)
                                  y
                                  (+ (@fib (- x 1))
                                     (@fib (- x 2)))))]
    (memoize fib)))

(let [f (make-fibo 1)]
  (f 35)) ;; Var null/null is unbound!?! 
Run Code Online (Sandbox Code Playgroud)

我当然可以手动编写一个宏来创建一个封闭的原子并自己管理memoization,但我希望没有这样的hackery这样做.

recursion closures scope clojure memoization

37
推荐指数
3
解决办法
4074
查看次数

我应该如何为给定的人口优化哈希表?

假设我有一组键值对,我计划存储在哈希表中.人口是固定的,永远不会改变.我可以使用哪些优化来尽可能快地创建哈希表?我应该集中精力进行哪些优化?这假设我有很多空间.将有合理数量的对(例如不超过100,000).

编辑:我想优化查找.我不在乎构建需要多长时间.

java

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

Unicode字符串和TStringStream

Delphi 2009及更高版本使用unicode字符串作为其默认字符串类型.据我所知,unicode char实际上是16位值或2个字节(注意:我知道有可能有3或4个字节的char,但让我们考虑最常见的情况).但是我发现TStringStream对于操作这个字符串不是很可靠.例如,TStringStream.Size属性返回字符串的长度,而我认为它应该返回包含字符串的字节数.好吧,你可以自己调整它,但最让我困惑的是:TStringStream不能可靠地读取或写入缓冲区.

请检查以下代码(这是一个DUnit测试,总是失败).请告诉我问题所在(我在测试代码时使用的是D2010).

procedure TestTCPackage.TestStringStream;
const
  cCount = 10;
  cOrdMaxChar = Ord(High(Char));
var
  B: Pointer;
  SW, SR: TStringStream;
  T: string;
  i, j, k : Integer;
  vStrings: array [0..cCount-1] of string;
begin
  RandSeed := GetTickCount;
  for i := 0 to cCount - 1 do
  begin
    j := Random(100) + 1;
    SetLength(vStrings[i], j);
    for k := 1 to j do
      // fill string with random char (but no #0)
      vStrings[i][k] := Char(Random(cOrdMaxChar-1) + 1);
  end;

  for i := 0 to cCount …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

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