【问题标题】:What will this construction do?这个建筑会做什么?
【发布时间】:2010-01-17 23:33:12
【问题描述】:
std::vector<int> a;
int p;
int N;

// ...

p = a[ N>>1 ];

N&gt;&gt;1 部分是什么?

【问题讨论】:

  • 我们需要为您获取更多信息才能获得准确的答案。 p 和 a 是如何声明的?
  • 这取决于 p 和 a 是什么向量 of
  • @kdt:确实。 a 必须包含可以分配给p 的东西,如果是这样,我收集a 是向量的向量,如果p 本身是向量。但这只是猜测。
  • 为什么不在您的问题中添加这种上下文?此外,如果是这种情况,您的代码不应该编译。
  • 已编辑。那种代码 sn-p 更清楚地传达信息。此外,重述代码的哪一部分也很有帮助,所以我们知道您对哪一部分感到困惑,就像我所做的那样。我不想显得刻薄,只是将来要考虑的事情。 :)

标签: c++ operators


【解决方案1】:

将 N 除以 2(通过位右移 1)并将其用作向量 a 的索引以分配 p。

【讨论】:

  • 可能应该更好地提及的是 (N / 2)。它更具可读性和正确性。
【解决方案2】:

看起来它将p 设置为a 的中间元素。如果a 已排序,它将是中间元素,并且可能是二分搜索算法的一部分。

【讨论】:

  • 这是不正确的,除非N等于a的长度。 N >> 1 相当于一个整数除以二。
  • 是的,我假设 Na 中的元素数量,这在数学和 O() 表示法的上下文中是相当标准的。
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多