问题列表 - 第44630页

为什么是List(T).清除O(N)?

根据MSDN文档中的List<T>.Clear方法:

该方法是O(n)操作,其中n是Count.

为什么O(n)?我问,因为我认为List<T>只需在T[]内部分配一个新数组即可完成清除.没有其他类可以引用这个数组,所以我没有看到这种方法的危害.

现在,也许这是一个愚蠢的问题......正在分配一个T[]数组本身O(n)?出于某种原因,我不会这么想; 但也许是(我现在缺少CS学位吗?).如果是这样,我想这可以解释它,因为根据上面引用的相同文档,列表的容量保持不变,这意味着需要构建一个相同大小的数组.

(然后,这似乎不是正确的解释,因为文档应该说"其中n是容量 " - 而不是 Count*).

我只是怀疑这个方法,而不是分配一个新的数组,将当前的所有元素归零; 而且我很想知道为什么会这样.

*Hans Passant在对LukeH的回答中指出,文档是正确的.Clear只将已设置的元素清零List<T>; 它不需要将所有元素"重新归零".

.net performance big-o list clear

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

如何在IDLE中使用反斜杠(\)?

我使用Mac,当我想输入一个时,我使用Shift+ Alt+ .我正在尝试学习Python,因为你可以看到\工作正常,但不是在IDLE./\

如何在IDLE中使用反斜杠(\)?

python macos backslash python-idle

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

'numeric_limits'未在此范围内声明,没有匹配函数用于调用'max()'

我在我的mac/xcode上编译了这个代码,没有任何问题.我在学校用linux上的g ++编译它,我得到这些错误:

:'numeric_limits'不是std的成员
:'>'标记之前的预期primary-expression
:没有用于调用'max()'的匹配函数

#include <iostream>
#include <cstdlib>

using namespace std;

int GetIntegerInput(int lower, int upper)
{
    int integer = -1;
    do
    {    
        cin >> integer;
        cin.clear();
        cin.ignore(std::numeric_limits<streamsize>::max(), '\n');  //errors here
    }while (integer < lower || integer > upper);

    return integer;    
} 
Run Code Online (Sandbox Code Playgroud)

我猜对了也许我必须加一个额外的标题.如果我带走了std ::它只是给了我一个类似的错误

'numeric_limits'未在此范围内声明

c++ ignore max cin numeric-limits

20
推荐指数
2
解决办法
3万
查看次数

Essential Swing库?JGoodies,JFreeChart

轮子是一次又一次地发明的 - 至少在查看任何普通的Swing GUI项目时都是如此.

在许多领域,有一两个非常着名的库,用于标准类库不能直接寻址的东西,例如用于持久化的hibernate.

但对于GUI应用程序来说,事情似乎有点不太清楚 - 您认为哪些库对于几乎所有新的GUI项目都是必不可少的?

我建议JGoodies作为开始.对于涉及以图形方式显示数据的任何事情,可能是JFreeChart.对于更复杂的组件SwingX - 我从未使用它,但我听到它经常提到.

我知道Swing有其他选择,但至少可以坚持这个问题.

java swing jgoodies libraries

8
推荐指数
1
解决办法
2251
查看次数

Android Test Monkey - 设置详细程度?

从命令行运行Test Monkey时如何更改详细级别?

这两个命令有效:

adb shell monkey -p com.my.package 5000
adb shell monkey -p com.my.package -v 5000
Run Code Online (Sandbox Code Playgroud)

开发人员文档说,"命令行上的每个-v都会增加详细级别.级别0(默认值)提供的信息几乎不包括启动通知,测试完成和最终结果.级别1提供有关测试运行的更多详细信息,例如发送到您的活动的个别事件.第2级提供更详细的设置信息,例如选择或未选择用于测试的活动.

但是,当我尝试adb shell monkey -p com.my.package -v -v 5000我得到一个segmentation fault monkey -p com.my....

我试过adb shell monkey -p com.my.package -v 2 5000,但是猴子读的2是计数,而不是值-v.

救命?:)

testing android unit-testing monkey android-monkey

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

C++调用对象的完全错误(虚拟)方法

我有一些C++代码(由其他人编写)似乎调用了错误的函数.情况如下:

UTF8InputStreamFromBuffer* cstream = foo();
wstring fn = L"foo";
DocumentReader* reader;

if (a_condition_true_for_some_files_false_for_others) {
    reader = (DocumentReader*) _new GoodDocumentReader();
} else {
    reader = (DocumentReader*) _new BadDocumentReader();
}

// the crash happens inside the following call
// when a BadDocumentReader is used
doc = reader->readDocument(*cstream, fn);
Run Code Online (Sandbox Code Playgroud)

条件为真的文件处理正常; 它是虚假崩溃的那些.DocumentReader的类层次结构如下所示:

class GenericDocumentReader {
    virtual Document* readDocument(InputStream &strm, const wchar_t * filename) = 0;
}

class DocumentReader : public GenericDocumentReader {
    virtual Document* readDocument(InputStream &strm, const wchar_t * filename) {
        // some stuff …
Run Code Online (Sandbox Code Playgroud)

c++ virtual-functions overloading

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

是否可以在Actionscript 3.0中进行实时网络游戏

问题:是否可以通过套接字连接更新Flash Player中的100多个对象?更多细节和我自己的尝试在下面!

细节

对于我的实习,我有时间创建一个多人物理游戏.我坚持了三个月.我的实习即将结束,我无法完成比赛.

我的问题是它很难每次发送多个数据包到服务器并返回.我发送的数据包是对象的位置更新和其他客户端的鼠标.

我将尝试解释网络/游戏流程.

  1. 客户端使用AS3中的二进制Socket类连接到服务器
  2. 服务器要求验证,客户端发送名称和缩略图.
  3. 服务器等待直到4个客户端连接(一些匹配等)
  4. 服务器选择4个客户端并使它们在单独的线程上运行(作为一个团队组合)
  5. 客户端将其性能分数发送到服务器范围1-100.
  6. 服务器使最好的客户端成为物理主机和其他3个从属服务器
  7. 主机游戏设置关卡并在关卡中制作大约1-100个形状(主要形状和复杂形状,如桥梁,马达,弹簧)
  8. 每个时间步骤主机获取形状的所有更新属性并将它们发送到客户端(x,y,旋转,睡眠)
  9. 客户端将所有形状属性应用于正确的形状

我尝试了不同的时间步骤并注意到,直到1/15秒的时间步长,客户端(奴隶)将不会注意到游戏中的任何滞后.我还尝试选择较低的时间步长并补间形状的运动,但这确实在客户端(从属)方面产生了一些奇怪的动作.

我将举一个单个对象更新包的例子.

<O|t=s:u|x=201|y=202|f=automaticoo</O
<O|t=m:p|x=100|y=345|f=automaticoo</O
Run Code Online (Sandbox Code Playgroud)

我注意到Flash Player可以在发送之前在缓冲区中堆叠大量数据包.例如,如果我一次发送大量数据包,它会将它们堆叠起来并将它们一起发送到服务器.通过更快的时间步长,您无法在客户端(从属)端获得更多更新,但在同一数据包行中获得更多更新.

尝试

  1. 使用新的RTMFP(udp和p2p)协议进行更新.(性能稍好但可靠性较差)
  2. 使用c ++而不是Air(使用ServerSocket)对我的整个套接字服务器进行编码(性能更好,但注意到滞后部分不是服务器而是Flash Player)
  3. 使用ByteArray压缩方法和AMF序列化格式(性能大致相同,但c ++服务器不能反序列化消息)

你们认为在Flash Player中有可能每次都处理这么多的更新请求.

发现

在ActionScript 3.0中有一个多人游戏棒竞技场游戏.他们使用了大量的欺骗手段,即使这样我也能获得大约300毫秒的ping,它只会不断更新玩家(大厅中有4名玩家).

对不起,很长的帖子.

c++ sockets flash actionscript-3

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

函数体的模板参数推导

如果我们有这个功能模板,

template<typename T>
void f(T param) {}
Run Code Online (Sandbox Code Playgroud)

然后我们可以通过以下方式调用它,

int i=0;
f<int>(i);//T=int : no need to deduce T
f(i); //T=int : deduced T from the function argument!

//likewise
sample s;
f(s); //T=sample : deduced T from the function argument!
Run Code Online (Sandbox Code Playgroud)

现在考虑上面函数模板的这个变体,

template<typename TArg, typename TBody>
void g(TArg param) 
{
   TBody v=param.member;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我们写,编译器可以推断出模板参数吗?

sample s;
g(s); //TArg=sample, TBody=int??
Run Code Online (Sandbox Code Playgroud)

假设sample定义为,

struct sample
{
   int member;
};
Run Code Online (Sandbox Code Playgroud)

基本上有两个问题:

  • 编译器可以在第二个例子中推断出模板参数吗?
  • 如果不是,为什么呢?有什么困难吗?如果标准没有说"函数体的模板参数推导",那是不是因为参数不能推导出来?或者它没有考虑这样的推论,以避免增加语言的复杂性?或者是什么?

我想知道你对这种演绎的看法.


编辑:

顺便说一下,如果我们编写这段代码,GCC能够推导出函数参数:

template<typename T>
void h(T p)
{
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ standards templates iso

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

获取<aop:scoped-proxy />,它是jsp内部的会话作用域

我将我的用户会话存储为<aop:scoped-proxy/>代理.我将如何在jsp上访问它?

我假设豆存储在会话的某个地方,如果我错了,请纠正我.

java spring jsp

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

在Java中,如何将System.out重定向到null然后再返回到stdout?

我试图使用以下代码临时将System.out重定向到/ dev/null但它不起作用.

System.out.println("this should go to stdout");

PrintStream original = System.out;
System.setOut(new PrintStream(new FileOutputStream("/dev/null")));
System.out.println("this should go to /dev/null");

System.setOut(original);
System.out.println("this should go to stdout"); // This is not getting printed!!!
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

java iostream stdout

34
推荐指数
3
解决办法
2万
查看次数