【问题标题】:how to ue memset to set a particular column of 2D array如何使用 memset 设置二维数组的特定列
【发布时间】:2013-07-09 13:55:14
【问题描述】:

伙计们,我现在有一个这样的数组 xd[2][10000] 我想运行一个从 0 到 10000 的循环 现在我希望当 i=0 时 xd 数组的值从 0 到 10000 变为 0 下一次当 i=1 时,从 xd[0][1] 到 xd[0][10000] 的值变为 1 相似,当 i=2 从 xd[0][2] 到 xd[0][10000] 变为 2 并且所以我想为此使用 memset 函数,所以你们可以帮我编写代码。 xd[1][i] 也类似 可以通过增加 xd[0][i]=i 和 xd[1][i]=i 轻松做到这一点,我会得到相同的结果,但我知道我不需要我想要这个用于另一个程序所以请只是 memset 函数而已

【问题讨论】:

  • 如果你能提供帮助,请不要发表评论
  • 每个数组元素的type是什么?由于memset() 填充有 bytes,它不会使用 0 以外的值在 int 上执行您想要的操作。
  • long long 是数组的类型
  • 请使用正确的语法(标点符号!)和代码格式来帮助理解。
  • 新来的所以对不起!!!!!!!!!!!!:)

标签: c++ memset


【解决方案1】:

怎么样:

for (int i = 0; i < 10000; i++)
    xd[0][i] = i;

不需要memset。


由于您的问题被标记为 ,因此 C++ 标准库有许多不错的 algorithms,包括一个名为 std::iota 的函数,它可以完全按照上述方式进行操作,但代码更少:

std::iota(std::begin(xd[0]), std::end(xd[0]), 0);

【讨论】:

  • 正如我所说的我想使用 memset 函数只看我的帖子我知道这个方法我不需要这个我想要它用于特定程序但不想在这里发布整个程序
  • @AlokSrivastava 然后只为特定值调用memset?您所做的与我的代码正在做的相同,但是您想使用一种更无效的方法来执行此操作...首先将所有值设置为零,然后您想用1 覆盖除一个之外的所有值,然后您想用2 等覆盖除两个之外的所有内容。这是很多不需要的覆盖。
  • 好的,在我的原始程序中看到我有另一个数组,我正在循环它并用另一个值检查它,然后以我提到的相同格式增加这个数组,在这个检查的基础上我再次使用另一个循环我不想在我的程序中有这么多循环。所以你说的方法比 memset 快吗
  • @AlokSrivastava:这个方法正确比更快更重要。
  • @AlokSrivastava 您仍然循环遍历数组,但随后您调用其中包含循环的函数。这显然会不太有效。你在做什么也不太明显。我的方法很直截了当,你看它到底做了什么,效果第二。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多