小编use*_*679的帖子

List.Sort with lambda expression

我正在尝试使用lambda表达式对列表的一部分进行排序,但在尝试这样做时出现错误:

List<int> list = new List<int>();
list.Add(1);
list.Add(3);
list.Add(2);
list.Add(4);

// works fine
list.Sort((i1, i2) => i1.CompareTo(i2) );

// "Cannot convert lambda expression to type 'System.Collections.Generic.IComparer<int>' because it is not a delegate type"
list.Sort(1, 2, (i1, i2) => i1.CompareTo(i2) );

foreach (int i in list)
    Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

猜测这是因为对于需要范围的排序,没有System.Comparison重载.这是否因任何特殊原因而被省略?

有没有一种简单的方法从lambda表达式中获取合适的IComparer(就像我可以使用的类list.Sort(1, 2, new CompareyThing<int>((...) => ...))或其他东西)?

c# sorting lambda delegates list

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

为什么operator []只接受一个参数?

有很多与operator []相关的问题只有一个参数,但我找不到一个实际说明原因的问题.

例如,matrix[0, 3]调用ElementT& operator[](SizeT x, SizeT y)函数似乎是语言的一种非常自然的扩展.

是否有任何特殊原因(例如不兼容性),这种语法不在语言中,或者除了缺乏动机之外还有什么阻止它被添加?

(注意:这已被标记为重复,但事实并非如此.这个问题是"为什么语言中没有这种语法?"而不是"我如何解决这个问题?".如上所述,有很多问题解决后者,但没有一个回答前者.)

c++ operator-overloading subscript-operator

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

C ++使用默认初始化的迭代器创建空的std :: string

以下代码有效且定义明确吗?

auto start = std::string::const_iterator();
auto end = std::string::const_iterator();

auto output = std::string(start, end);
Run Code Online (Sandbox Code Playgroud)

(预期输出为空字符串。)

c++ iterator language-lawyer

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

c#Array.ForEach替换元素的替代方法

是否有一个我可以使用的标准函数,它类似于ForEach迭代一个数组,将一个函数应用于每个元素并用结果替换它在数组中?

类似下面的内容,但后面的维度包含每个元素的IntPow(2,i)的结果.

dimensionPowers = Enumerable.Range(0, dimensions + 1).ToArray();
Array.ForEach(dimensionPowers,
    (i) => IntPow(2, i));
Run Code Online (Sandbox Code Playgroud)

(我知道我可以使用for循环迭代数组 - 我只是想知道是否有更简洁的替代方案).

c# arrays foreach transform

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

与None变量的类型比较

我知道不建议比较类型,但我有一些代码在if elif系列中执行此操作.但是,我对于None值如何工作感到困惑.

def foo(object)
    otype = type(object)
    #if otype is None: # this doesn't work
    if object is None: # this works fine
        print("yep")
    elif otype is int:
    elif ...
Run Code Online (Sandbox Code Playgroud)

为什么我可以比较is int好等等,但没有is None?types.NoneType似乎在Python 3.2中消失了,所以我无法使用它......

下列

i = 1
print(i)
print(type(i))
print(i is None)
print(type(i) is int)
Run Code Online (Sandbox Code Playgroud)

版画

1
<class 'int'>
False
True
Run Code Online (Sandbox Code Playgroud)

i = None
print(i)
print(type(i))
print(i is None)
print(type(i) is None)
Run Code Online (Sandbox Code Playgroud)

版画

None
<class 'NoneType'>
True
False
Run Code Online (Sandbox Code Playgroud)

我觉得None很特别,但是给出了什么?是否NoneType真的存在,或Python的骗我?

python python-3.x nonetype

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

使用Programmer's Notepad 2作为git的编辑器

我见过有关使用notepad ++和其他编辑器的帖子,但没有关于使用PN2的帖子.

我尝试过以下各种变体,但它们似乎都没有效果:

git config --global core.editor "'C:\Program Files (x86)\Programmer's Notepad\pn.exe -allowmulti' -w"
Run Code Online (Sandbox Code Playgroud)

我只是得到如下错误(这是在"git commit --amend"之后):

'C:\Program Files (x86)\Programmer's Notepad\pn.exe -allowmulti' -w: -c: line 0:
unexpected EOF while looking for matching `''
'C:\Program Files (x86)\Programmer's Notepad\pn.exe -allowmulti' -w: -c: line 1:
syntax error: unexpected end of file
error: There was a problem with the editor ''C:\Program Files (x86)\Programmer's
Notepad\pn.exe -allowmulti' -w'.
Please supply the message using either -m or -F option.
Run Code Online (Sandbox Code Playgroud)

有可能让这个工作吗?

git programmers-notepad

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

使用迭代器查找字符串中的子字符串

我有一个由两个迭代器(startend)定义的子字符串.我需要检查这个子字符串是否存在于另一个字符串中.

是否有标准库算法或字符串成员我可以使用或适应这样做而不创建一个全新的字符串对象(std::string(start, end))只是为了这个目的?

例如

struct Substring
{
    std::string::const_iterator start, end;
};

auto found = std::contains(whole.begin(), whole.end(), substring.start, substring.end); // ???
Run Code Online (Sandbox Code Playgroud)

c++ string iterator find

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