小编iam*_*ind的帖子

vector :: resize()和vector :: reserve()之间的选择

我正在为我的vector成员变量预先分配一些内存.下面的代码是最小的部分

class A {
  vector<string> t_Names;
public:
  A () : t_Names(1000) {}
};
Run Code Online (Sandbox Code Playgroud)

现在在某个时间点,如果t_Names.size()等于1000.我打算增加规模100.然后如果它到达1100,再增加100等等.

我的问题是,在vector::resize()和之间做出选择vector::reserve().在这种情况下还有更好的选择吗?

编辑:我有一些精确的估计t_Names.我估计它要700到了800.然而,在某些(很少)情况下,它可以增长超过1000.

c++ vector

142
推荐指数
2
解决办法
13万
查看次数

在C++ 11中用"auto"推导出lambda的类型是什么?

我有一种感觉,lambda的类型是一个函数指针.当我进行以下测试时,我发现它是错误的(演示).

#define LAMBDA [] (int i) -> long { return 0; }
int main ()
{
  long (*pFptr)(int) = LAMBDA;  // ok
  auto pAuto = LAMBDA;  // ok
  assert(typeid(pFptr) == typeid(pAuto));  // assertion fails !
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是否缺少任何一点?如果不是那么,typeofauto关键字推导出的lambda表达式是什么?

c++ lambda typeof auto c++11

129
推荐指数
4
解决办法
3万
查看次数

如何在Javascript中循环键入/值对象?

var user = {};
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个setUsers()接受键/值对对象并初始化user变量的方法.

setUsers = function(data) {     
   // loop and init user    
}
Run Code Online (Sandbox Code Playgroud)

数据如下:

234: "john", 23421: "smith", ....
Run Code Online (Sandbox Code Playgroud)

javascript iteration loops for-loop key-value

127
推荐指数
3
解决办法
29万
查看次数

我应该在C++中使用异常说明符吗?

在C++中,您可以通过使用异常说明符指定函数可能会也可能不会抛出异常.例如:

void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
Run Code Online (Sandbox Code Playgroud)

由于以下因素,我对实际使用它们表示怀疑:

  1. 编译器并没有以任何严格的方式真正强制执行异常说明符,因此效益并不高.理想情况下,您希望得到编译错误.
  2. 如果函数违反了异常说明符,我认为标准行为是终止程序.
  3. 在VS.Net中,它将throw(X)视为throw(...),因此遵守标准并不强.

你认为应该使用异常说明符吗?
请回答"是"或"否"并提供一些理由来证明您的答案.

c++ exception function throw specifier

119
推荐指数
5
解决办法
3万
查看次数

为什么要为一个不给出相同值的位字段赋值?

我在Quora帖子中看到了以下代码:

#include <stdio.h>

struct mystruct { int enabled:1; };
int main()
{
  struct mystruct s;
  s.enabled = 1;
  if(s.enabled == 1)
    printf("Is enabled\n"); // --> we think this to be printed
  else
    printf("Is disabled !!\n");
}
Run Code Online (Sandbox Code Playgroud)

在C&C++中,代码的输出都是意外的,

被禁用 !!

虽然在那篇文章中给出了"符号位"相关的解释,但是我无法理解,我们如何设置某些内容然后它没有反映出来.

有人可以给出更详细的解释吗?


注意:标签都是必需的,因为它们的标准在描述位字段时略有不同.请参阅C规范C++规范的答案.

c c++ bit-fields signed-integer implementation-defined-behavior

95
推荐指数
5
解决办法
5152
查看次数

C++ 03 throw()说明符C++ 11 noexcept之间的区别

有没有之间的任何其他差别throw()noexcept除了被检查的运行时分别编译时间?

维基百科C++ 11文章表明不推荐使用C++ 03 throw说明符.
为什么这样,noexcept有足够的能力在编译时覆盖所有这些?

[注意:我提到了这个问题这篇文章,但没有得到弃用的充分理由.]

c++ exception throw noexcept c++11

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

这是C++ 11 for循环的已知缺陷吗?

让我们假设我们有一个结构,用于保存3个带有一些成员函数的双精度数:

struct Vector {
  double x, y, z;
  // ...
  Vector &negate() {
    x = -x; y = -y; z = -z;
    return *this;
  }
  Vector &normalize() {
     double s = 1./sqrt(x*x+y*y+z*z);
     x *= s; y *= s; z *= s;
     return *this;
  }
  // ...
};
Run Code Online (Sandbox Code Playgroud)

这有点简单,但我相信你同意类似的代码.这些方法可以方便地链接,例如:

Vector v = ...;
v.normalize().negate();
Run Code Online (Sandbox Code Playgroud)

甚至:

Vector v = Vector{1., 2., 3.}.normalize().negate();
Run Code Online (Sandbox Code Playgroud)

现在,如果我们提供了begin()和end()函数,我们可以在new-style for循环中使用Vector,比如循环遍历3个坐标x,y和z(你无疑可以构造更多"有用"的例子通过用例如String替换Vector):

Vector v = ...;
for (double x : v) { ... }
Run Code Online (Sandbox Code Playgroud)

我们甚至可以这样做:

Vector v = ...;
for …
Run Code Online (Sandbox Code Playgroud)

c++ foreach for-loop language-lawyer c++11

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

如何使用webRTC和基于服务器的Peer连接记录网络摄像头和音频

我想记录用户网络摄像头和音频,并将其保存到服务器上的文件中.然后,这些文件可以提供给其他用户.

我没有播放问题,但是我在录制内容方面遇到了问题.

我的理解是.record()还没有编写getUserMedia 函数 - 到目前为止只提出了一个提议.

我想使用PeerConnectionAPI在我的服务器上创建一个对等连接.我知道这有点hacky,但我认为应该可以在服务器上创建一个peer并记录client-peer发送的内容.

如果可以,我应该能够将此数据保存为flv或任何其他视频格式.

我的偏好实际上是记录网络摄像头+音频客户端,以允许客户端在上传前不喜欢他们的第一次尝试时重新录制视频.这也将允许网络连接中断.我已经看到一些代码允许通过将数据发送到画布来记录网络摄像头中的各个"图像" - 这很酷,但我也需要音频.

这是我到目前为止的客户端代码:

  <video autoplay></video>

<script language="javascript" type="text/javascript">
function onVideoFail(e) {
    console.log('webcam fail!', e);
  };

function hasGetUserMedia() {
  // Note: Opera is unprefixed.
  return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia || navigator.msGetUserMedia);
}

if (hasGetUserMedia()) {
  // Good to go!
} else {
  alert('getUserMedia() is not supported in your browser');
}

window.URL = window.URL || window.webkitURL;
navigator.getUserMedia  = navigator.getUserMedia || navigator.webkitGetUserMedia ||
                          navigator.mozGetUserMedia || navigator.msGetUserMedia;

var video = document.querySelector('video');
var …
Run Code Online (Sandbox Code Playgroud)

javascript c++ video-streaming audio-streaming webrtc

81
推荐指数
4
解决办法
7万
查看次数

为什么"使用命名空间X;" 在类/结构级别内是不允许的?

class C {
  using namespace std;  // error
};
namespace N {
  using namespace std; // ok
}
int main () {
  using namespace std; // ok
}
Run Code Online (Sandbox Code Playgroud)

编辑:想知道背后的动机.

c++ namespaces using language-lawyer

77
推荐指数
4
解决办法
5万
查看次数

JavaScript支持64位整数吗?

我有以下代码:

var str = "0x4000000000000000";   //4611686018427387904 decimal
var val = parseInt(str);
alert(val);
Run Code Online (Sandbox Code Playgroud)

我得到这个值:" 4611686018427388000",这是0x4000000000000060

我想知道JavaScript是否错误处理64位整数还是我做错了什么?

javascript 64-bit integer numbers

76
推荐指数
3
解决办法
5万
查看次数