我正在尝试使用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>((...) => ...))或其他东西)?
有很多与operator []相关的问题只有一个参数,但我找不到一个实际说明原因的问题.
例如,matrix[0, 3]调用ElementT& operator[](SizeT x, SizeT y)函数似乎是语言的一种非常自然的扩展.
是否有任何特殊原因(例如不兼容性),这种语法不在语言中,或者除了缺乏动机之外还有什么阻止它被添加?
(注意:这已被标记为重复,但事实并非如此.这个问题是"为什么语言中没有这种语法?"而不是"我如何解决这个问题?".如上所述,有很多问题解决后者,但没有一个回答前者.)
以下代码有效且定义明确吗?
auto start = std::string::const_iterator();
auto end = std::string::const_iterator();
auto output = std::string(start, end);
Run Code Online (Sandbox Code Playgroud)
(预期输出为空字符串。)
是否有一个我可以使用的标准函数,它类似于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循环迭代数组 - 我只是想知道是否有更简洁的替代方案).
我知道不建议比较类型,但我有一些代码在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的骗我?
我见过有关使用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)
有可能让这个工作吗?
我有一个由两个迭代器(start和end)定义的子字符串.我需要检查这个子字符串是否存在于另一个字符串中.
是否有标准库算法或字符串成员我可以使用或适应这样做而不创建一个全新的字符串对象(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)