小编Max*_*uxa的帖子

vector.assign()按顺序值

以下是明确界定的吗?

std::vector<std::string> v{"test"};
v.assign(1, v.at(0));
Run Code Online (Sandbox Code Playgroud)

如果旧序列在构造新序列之前被销毁,则传递给的引用assign将无效,因此程序将是格式错误的.

标准是否提到这种情况(值是旧序列的一部分)或类似的任何地方,使这个结构格式良好?我找不到任何东西.

从VS2010附带的Dinkumware标准库实现的副本(_Assign_n内部称为assign):

void _Assign_n(size_type _Count, const _Ty& _Val)
{ // assign _Count * _Val
    _Ty _Tmp = _Val; // in case _Val is in sequence
    erase(begin(), end());
    insert(begin(), _Count, _Tmp);
}
Run Code Online (Sandbox Code Playgroud)

评论

如果_Val是顺序的

建议标准明确规定分配一个属于当前序列的元素是格式正确的,或者Dinkumware的实现只是试图变得聪明;)

哪一个?

c++ c++-standard-library

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

NaN的实施背后的原因是什么?

虽然函数的名称在isNaN语义上与值相关isNaN,但本机实现会返回true一些非NaN对象,如undefined{}.

isNaN(undefined);
=> true
Run Code Online (Sandbox Code Playgroud)

我认为,例如,下划线的实现更加直观/合理:

_.isNaN(undefined);
=> false
Run Code Online (Sandbox Code Playgroud)

为什么ECMA标准规定了这种违反直觉的行为?

为什么他们不设计isNaN返回要测试的值是否 真的并且在单独的函数上测试convertable-to-number的负担呢?true isNaNisNumber

这样做会带来更多优势,例如在测试数字时没有双重否定:

if (isNumber(x)) { } // if x is a number
Run Code Online (Sandbox Code Playgroud)

代替

if (!isNaN(x)) { }   // if x is not not a number
Run Code Online (Sandbox Code Playgroud)

由于他们将Number.isNaN()在ECMAScript 6中引入(它完全符合你的期望),看起来有更多的人这样想.

那么,为什么他们首先设计isNaN它的方式呢?这只是一个错误的决定还是有充分的理由这样做?

javascript standards ecmascript-6

5
推荐指数
0
解决办法
124
查看次数

C#,如何让重载方法共享 &lt;summary&gt; 标签

我正在开发一个小类,使用我的重载方法,如下所示:

/// <summary>
/// some description about myMethod
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <returns></returns>
public string myMethod(string arg1, string arg2) { };
public string myMethod(string arg1){};
Run Code Online (Sandbox Code Playgroud)

问题是采用一个参数的方法没有在标签中显示描述。我应该将相同的摘要标签单独添加到第二种方法中吗?我觉得有点烦人,因为 myMethod 描述应该有相同的标签描述,尽管参数描述可能会有所不同。

有没有办法让重载方法共享一个描述?

c# methods overloading summary xml-documentation

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

如何修复错误"long*与U32**不兼容"?

我尝试使用以下签名调用函数:

I32 contour8(image *a, I32 x0, I32 y0, I32 dir, I32 thr, U32 lng, U32 **dst);
Run Code Online (Sandbox Code Playgroud)

使用此代码:

int posx = 100, posy = 100, dx = 300, dy = 300;
long length = 5000;
int threshold = 125;
int lx, x0 = 0, y0 = 0;
int res1 = 0, res2 = 0, *rlc, *input, i;
long dest1, dest2, desttemp, addr;
char c;
image Area;

desttemp = dest1;
res1 = contour8(&Area, x0, y0, ~2, threshold, length, &desttemp);
Run Code Online (Sandbox Code Playgroud)

但是在编译时我得到以下错误:

error argument …
Run Code Online (Sandbox Code Playgroud)

c c++ type-conversion

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