如何在二维向量上使用memset函数

3

我这里有一个2D向量,我想要给它赋一个值num。作为一个C++新手,我想看看哪个更好用:fill还是memset()。但我在设置正确的代码语法时遇到了问题,每次都会出现“段错误”。

vector<vector<int>> matrix(10, vector<int>(10000000));
int main()
{
    int num;
    cin >> num;
    int i = 0;
    for (auto &i : matrix)
    {
        fill(i.begin(), i.end(), num); 
    }
    return 0;
}

2
展示一下你的memset尝试? - Mike Vine
虽然与你的问题无关,但 int i = 0; 的声明是没有意义的,你可以完全将其删除。 - Jabberwocky
4
你不能使用memset函数随意地将值赋给int类型的变量。 - molbdnilo
memset作用于字节,如果你使用memset和1一起使用,你将得到值为16843009的整数,参见ideone上的这个例子 - PeterT
谢谢大家的支持,我在这方面还很新,尝试使用memset时出了点问题: memset(&matrix[0], num, sizeof(matrix[0]) * matrix.size()); 但我相当肯定自己用错了。 - Zambodia
显示剩余3条评论
1个回答

5

如果最右边的维度始终固定,那么可以将所有这些项作为ContiguousContainer概念,例如vector<array<int,10000000>> vv{10, array<int,10000000>{num} }; - sandthorn
谢谢Hamed的回复,但我想使用需要分配值(可能彼此不同)的情况,尽管我目前只使用了一个替代方案,将所有值都分配为1。 - Zambodia
@Zambodia 我不确定我是否正确理解了你的意思,但如果你需要用不同的数字填充std::vector,你需要逐步完成,例如使用push_back。如果有一个序列,你想要用它来填充你的向量,我认为这是正确的方法-> https://dev59.com/xGMm5IYBdhLWcg3wVdx5 - HMD
@Hamed,谢谢,我可能会用这个。 - Zambodia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接