小编use*_*566的帖子

如何从列表中快速删除项目

我正在寻找一种快速从C#中删除项目的方法List<T>.文档说明List.Remove()List.RemoveAt()操作都是O(n)

这严重影响了我的申请.

我写了几个不同的删除方法,并在List<String>500,000个项目上测试它们.测试用例如下所示......


概观

我写了一个方法,它会生成一个字符串列表,其中只包含每个数字的字符串表示形式("1","2","3",...).然后我尝试remove了列表中的每个第5项.以下是用于生成列表的方法:

private List<String> GetList(int size)
{
    List<String> myList = new List<String>();
    for (int i = 0; i < size; i++)
        myList.Add(i.ToString());
    return myList;
}
Run Code Online (Sandbox Code Playgroud)

测试1:RemoveAt()

这是我用来测试RemoveAt()方法的测试.

private void RemoveTest1(ref List<String> list)
{
     for (int i = 0; i < list.Count; i++)
         if (i % 5 == 0)
             list.RemoveAt(i);
}
Run Code Online (Sandbox Code Playgroud)

测试2:删除()

这是我用来测试Remove()方法的测试.

private void RemoveTest2(ref List<String> list)
{
     List<int> itemsToRemove …
Run Code Online (Sandbox Code Playgroud)

c# linq collections list

69
推荐指数
4
解决办法
8万
查看次数

一条线上有两个相同的标志?

有人可以解释这是什么以及它是如何合法的C代码?我在此代码中找到了这一行:http://code.google.com/p/compression-code/downloads/list,这是用于自适应霍夫曼编码的Vitter算法的C实现

ArcChar = ArcBit = 0;
Run Code Online (Sandbox Code Playgroud)

从功能:

void arc_put1 (unsigned bit)
{
    ArcChar <<= 1;

    if( bit )
        ArcChar |= 1;

    if( ++ArcBit < 8 )
        return;

    putc (ArcChar, Out);
    ArcChar = ArcBit = 0;
}
Run Code Online (Sandbox Code Playgroud)

ArcChar是一个int而ArcBit是一个unsigned char

c

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

如何制作"腐败"文件

假设在测试期间,您希望测试软件如何处理"损坏"文件.

我有两个问题:

1.一般来说,如何定义"损坏"文件?换句话说,什么构成了腐败文件?

举个例子:

假设您需要测试"损坏的".pdf文件.

一个建议是简单地获取.zip文件,更改扩展名,然后测试.但是,我认为你没有测试程序如何处理"损坏的.pdf文件",而是测试它如何处理.zip文件.

另一个建议是打开文件并插入/删除随机字节.这个建议没问题,但有一些问题:

  • 修改或删除的部分可能(尽管不太可能)是无关紧要的.例如,您可以简单地删除一个巨大字符串的一部分,这将修改数据,但不一定会破坏文件.
  • 可以通过程序拒绝读取文件的方式修改文件.例如,如果删除.pdf标头,那么API(或您正在使用的任何标头)可能不会超过该点,并且根本无法测试该文件.
  • 与第一个项目符号类似:如果对文件进行了足够大的修改,则会产生一个参数,即生成的文件不再与原始文件格式相同.所以,再次,如果您要删除.pdf标头,那么该文件可能不再是.pdf文件.因此,尝试测试它不会测试损坏的.pdf文件,而是测试.pdf文件的一些奇怪变体.

2.一旦定义了损坏的文件,你如何创建一个?


这是我到目前为止所想的:

"损坏的文件"是一个正确符合文件格式规范但包含本身存在缺陷的数据/字节的文件.

我能想到的唯一例子是你是否以某种方式更改了文件的编码.然后,您可以将此方法应用于任意格式的文件.

谢谢阅读.

testing unit-testing functional-testing

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

Shunting-Yard算法建模

背景:

我正在尝试实现Shunting-Yard算法的变体,但不是以RPN表示法输出表达式,我希望它能够在推入标记时自动更新,以便结果可以实时显示(就像你按下计算器上的按钮,需要在每个按钮后更新显示器).

这是Shunting-Yard课程......

public class ShuntingYard
{
   private Stack<double> _operands;
   private Stack<Operation> _operations;

   public ShuntingYard()
   {
      this._operands = new Stack<double>();
      this._operations = new Stack<double>();
   }
}
Run Code Online (Sandbox Code Playgroud)

Operation堂课就像......

public abstract class Operation
{
   public abstract void Evaluate(Stack<double> operands, Stack<Operation> operations);
}
Run Code Online (Sandbox Code Playgroud)

Evaluate()函数相应地更新堆栈,并且"当前值"将是_operands.Peek()

以下是我到目前为止的一些"操作":

public class NullaryOperation : Operation { }
例如Pi,e等.
只需按常数_operands

public class UnaryOperation : Operation { }
例如SquareRoot,Sine,Cosine等.弹出
一个数字_operands,评估并推送结果_operands

public class BinaryOperation : Operation { }
例如+, - …

c# oop algorithm design-patterns

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

生成'n'二进制前缀码的算法

前缀代码是一组代码,使得没有代码的另一代码前缀.例如,以下集合是前缀代码:

10
11
000
001
0100
0101
0110
0111
Run Code Online (Sandbox Code Playgroud)

n = 8会员.我认为这些通常是用某种类型的霍夫曼树创造的.

我的问题是:你能帮助我创建一个能够生成带'n'成员的二进制前缀代码的函数吗?

像这样的东西:

list<int> GenerateBinaryPrefixCodes(int n);

而且,要求是在总位数最小化的意义上它是"最佳的".

我更喜欢用C/C++/C#/类似的答案.这不是真正的功课,但我标记它是因为它听起来像是一个很好的hw问题.

谢谢!

language-agnostic algorithm huffman-code

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

char*到std :: string的子串

我有一个chars 数组,我需要提取这个数组的子集并将它们存储在std::strings中.我试图基于找到\n角色将数组拆分成行.解决这个问题的最佳方法是什么?

int size = 4096;
char* buffer = new char[size];
// ...Array gets filled
std::string line;
// Find the chars up to the next newline, and store them in "line"
ProcessLine(line);
Run Code Online (Sandbox Code Playgroud)

可能需要这样的界面:

std::string line = GetSubstring(char* src, int begin, int end);

c++ arrays string

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

SELECT中表名后面的SQL Server额外文本

我发现了一个SQL语句:

SELECT * FROM Users x
Run Code Online (Sandbox Code Playgroud)

我的问题是:什么是x?我以前从未见过这个.

谢谢.

sql sql-server-2008

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

这是否会导致内存泄漏/我应该如何构造代码

我有点担心这段代码可能有内存泄漏.我想知道实际上是否有泄漏,以及解决这个问题的正确方法是什么.

说明:我有一个基类Pet与派生类Cat,DogBird.我正在解析文件中的行,并且根据该行中的某些内容,我需要创建派生类的实例,然后以特定方式再次解析行的一部分.这是一个示例文件:

Dog Spot Brown,Labrador,5
Cat Felix Black,7
Bird Polly Green,Parrot,12,Crackers
Run Code Online (Sandbox Code Playgroud)

还有一些代码:

class Pet
{
protected:
  string _type;
  string _name;
  string _desc;

public:
  Pet();
  bool ParseLine(std::string line);
  string Type() { return _type; }
  string Name() { return _name; }
  string Desc() { return _desc; }
};

class Dog : public Pet
{
private:
  string _color;
  string _type;
  int _age;

public:
  Dog(string type, string name, string desc);
  bool ParseDesc(string desc);
};
Run Code Online (Sandbox Code Playgroud)

主要代码:

ifstream …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance memory-leaks

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