c++ - 将 memset 用于特定行的二维数组
问题描述
最近,我了解到C++
. 特别是,我了解了memset
函数。但我不知道如何在特定行设置二维数组的值
例子:
int dp[10][10];
// I want to set all values for dp[0] by using memset
// I can do it, by using For loop, like
for (int i = 0; i < 10; i++)
dp[0][i] = 1000;
我试过这个
memset(dp[0], 1000, sizeof dp[0]);
但它运作不佳。
所以我想知道是否有任何方法可以像我希望的那样使用 memset?感谢:D
解决方案
正确的功能是std::fill_n
:https ://en.cppreference.com/w/cpp/algorithm/fill_n
std::fill_n(std::begin(dp[0]), sizeof dp[0] / sizeof dp[0][0], 1000);
或 C++17 或更高版本:
std::fill_n(std::begin(dp[0]), std::size(dp[0]), 1000);
std::fill
也是可能的:https ://en.cppreference.com/w/cpp/algorithm/fill
std::fill(std::begin(dp[0]), std::end(dp[0]), 1000);
我会这样做:
for (auto &i : dp[0]) i = 1000;
这也是最短的版本。
推荐阅读
- spring-boot - 基本身份验证在邮递员中返回 403,但在浏览器中工作正常
- c++ - 有没有办法在 C++ 中实现非成员 [] 运算符?
- apache-spark - 如何在桶列上使用分区动态覆盖?
- html - 空间不足时如何创建滚动功能
- python - 格式化大型列表理解的最佳实践?
- python - Selenium Python - 无法通过 Xpath 选择
- c# - 如何使用 CefSharp 在 winforms 中授权代理(登录名:密码:ip:端口:连接类型)?
- c# - NET5 JWT 不记名身份验证不识别 SSL 证书
- github-pages - 从 haproxy 转发到 github 页面:获取重定向而不是反向代理直通
- asp.net-mvc - 使页面响应并失去对输入字段的关注