首页 > 解决方案 > 将 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

标签: c++memset

解决方案


正确的功能是std::fill_nhttps ://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;

这也是最短的版本。


推荐阅读