小编use*_*967的帖子

为什么使List <T> .AddRange方法成为通用方法对性能有害?

我正在深入阅读C#(第3版)和第13章,在c#4中讨论包含协变和逆变类型参数的部分,这个主张是:

对于List.AddRange该参数的类型的IEnumerable的<T>,所以在这种情况下,你把每个列表作为一个IEnumerable <IShape的> -something,不会有以前是不可能的.AddRange本来可以用它自己的类型参数写成泛型方法,但它没有 - 这样做会使一些优化变得困难或不可能.

有人能为这种说法提供一些理由吗?对我来说这是真的并不明显.

.net c# generics performance covariance

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

如何从文本文件中读取特定数量的字符

我试着这样做

 #include <iostream>
 #include <fstream>

using namespace std;

int main()
{
    char b[2];
    ifstream f("prad.txt");
    f>>b ;
    cout <<b;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它应该读取2个字符,但它读取整行.这适用于另一种语言但由于某种原因无法在C++中运行.

c++ string file char

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

正则表达式在行的开头替换任意数量的匹配

我有这种结构的文字:

1.  Text1
2.  Text 2. It has a number with a dot.
3.  1.   Text31
Run Code Online (Sandbox Code Playgroud)

我想得到这个文字:

# Text1
# Text 2. It has a number with a dot. (notice that this number did not get replaced)
## Text31
Run Code Online (Sandbox Code Playgroud)

我尝试了以下操作,但它不起作用

var pattern = @"^(\s*\d+\.\s*)+";
var replaced = Regex.Replace(str, pattern, "#", RegexOptions.Multiline);
Run Code Online (Sandbox Code Playgroud)

基本上,它应该在每一行的开头开始匹配,并用#符号替换每个匹配的组.目前,如果匹配多个组,则所有内容都将替换为单个#符号.我使用的模式可能不正确,任何人都可以提出解决方案吗?

c# regex replace

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

有没有更简单的方法来“读取”pascal 中的枚举类型?

用户输入一个整数,该整数对应于定义的枚举类型的值。我需要将该值分配给变量t。这就是我的想法:

type test = (red,green,blue,fish);
var t:test;
    n,i:integer;
begin
  readln(n);
  t:=red;
  for i:=1 to n do
    t:=succ(t);
end.
Run Code Online (Sandbox Code Playgroud)

我是否让任务过于复杂化了?是否可以写一个更简单的算法?

enums pascal

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

长函数声明行.分裂它的惯例是什么?

这是宣言

dll_DoublyLinkedNode *dll_search(const dll_DoublyLinkedList list, void *key, int (*compare)(void *data, void *key)){
Run Code Online (Sandbox Code Playgroud)

我应该分开吗?我应该保持原样吗?也许我应该做些不同的事情?

c coding-style

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

预处理器指令定义和ifdef不能像我想象的那样工作?

我有3个文件:

main.c中

#include <stdio.h>
#include <stdlib.h>
#include "test.h"

#define DEBUG

int main()
{
  testFunction();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

test.h

#ifndef TEST_H
#define TEST_H
#include <stdio.h>
#include <stdlib.h>

void testFunction();

#endif // TEST_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)

test.c的

#include "test.h"

void testFunction(){
  #ifdef DEBUG
    printf("I'm inside the testFunction\n");
  #endif
}
Run Code Online (Sandbox Code Playgroud)

问题:为什么程序不能在#ifdef DEBUG块中打印东西?如果我在test.h或test.c中写#define DEBUG一切都很好.那么在main.c中#define DEBUG的问题是什么?谢谢.

c c-preprocessor

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

在C中对结构数组进行排序

假设我有这样的结构:

typedef struct MyStruct{
  char *string1;
  int number1, number2, number3;
  char string2[11], string3[9];
  char *string4;
  char *string5;
}MyStruct;
Run Code Online (Sandbox Code Playgroud)

程序提示用户选择应该对数据进行排序的字段.我无法想到一种有效排序数组的方法.我真的需要为每个字段编写单独的排序函数吗?必须有其他一些方法,因为编写8个函数,其中2就足够了,看起来不合理.

c sorting

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

使用Selenium获取输入字段的当前文本

假设我有这个输入元素:

<input id="email" value="some@email.com">
Run Code Online (Sandbox Code Playgroud)

我执行这段代码:

var emailInputField = driver.FindElement(By.Id(email));
var email = emailInputField.GetAttribute("value");
emailInputField .InputField.Clear();
var empty = emailInputField.GetAttribute("value");
Run Code Online (Sandbox Code Playgroud)

我希望变量empty空,但它包含与电子邮件相同的文本,因为我清除了文本.我意识到value属性不会与输入的文本同步,所以我的问题是,如何找出文本框中当前的文本?

.net c# selenium input selenium-webdriver

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

';'之前的预期类型说明符 代币

我收到错误"'之前的预期类型说明符';' 令牌"在下面标记的代码行中.是否要求指定(*this)的类型?为什么编译器不知道(*this)的类型?

struct P{
};

struct R : public P{
  virtual P* copy(){
    return new(R(*this));  //error here
  }
};
Run Code Online (Sandbox Code Playgroud)

c++ inheritance class

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

如何将数组的所有元素更改为特定值?

例如,我有一个这样的数组:

bool log[100000]
Run Code Online (Sandbox Code Playgroud)

我有循环,我想将log中所有元素的值设置为True.换句话说,我想擦除在循环的每个循环之后已经完成的所有更改.我怎么能这样做?我可以改变不是全部,但让我们说100个值?

c++ arrays

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

(C++)从文本文件中读取数字

我有一个文本文件,如下所示:

73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511

等等20行.我想要做的是从文本文件中读取每个数字并将它们放入一个整数数组(一个元素=一个数字).如何从该文本文件中只读取一位数,而不是整行?

c++ file digit

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

如果知道偏移,如何获得结构的成员?

所以,我有一个结构

struct foo
{
  int a;
  int b;
  int c;
  char *string;
};
typedef struct foo foo;
Run Code Online (Sandbox Code Playgroud)

我有一个功能

void fun(void *data1, void *data2, int offset){
  int num1 = *(int *)(data1 + offset);
  int num2 = *(int *)(data2 + offset);
  printf("%d %d\n", num1, num2);
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好.但是当我尝试用字符串做同样的事情时出了点问题.

void fun(void *data1, void *data2, int offset){
  char *str1 = (char *)(data1 + offset);
  char *str2 = (char *)(data2 + offset);
  printf("%s %s\n", str1, str2);
}
Run Code Online (Sandbox Code Playgroud)

函数只打印一些随机字符.由于指针我开始变得头疼...

c pointers

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

摆脱枚举中的代码重复

我有一个接口,我希望枚举实现它,但有些方法是相同的,它会导致代码重复.我会使用抽象类而不是接口,但java不允许枚举扩展任何东西.有没有解决的办法?我包含一些代码来帮助理解问题.

public interface CommandI {
  boolean isCommand(String command);
  void execute(Drawer drawer, Creature creature);
  String getDescription();
}



public enum Command2 implements CommandI {
  FORWARD{
    private String description = "qwersadd";
    private String[] aliases = {"fd", "forward"};
    @Override
    public boolean isCommand(String command) {
        for (String s: aliases){
        if (s.equals(command)){
          return true;
        }
      }
      return false;
    }
    @Override
    public void execute(Drawer drawer, Creature creature) {
      throw new UnsupportedOperationException("Not supported yet.");
    }
    @Override
    public String getDescription() {
      return description;
    }
  },
  PENUP{
    private String description …
Run Code Online (Sandbox Code Playgroud)

java enums code-duplication

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