我创建了一个像这样的数组R:
int * R = new int[n];
其中n取大值,比如100,000。我想在C ++中将数组的所有整数初始化为1。最好/最快的方法是什么?或者,循环整个数组是唯一的选择吗?
答案 0 :(得分:8)
“最好/最快的方法是什么?”
在C ++中,您使用std::vector<int> R(n,1);
代替。
如果您需要其他地方的int*
,请参阅R.data()
。
答案 1 :(得分:1)
您可以从STL std::fill
获取:
std::fill(R, R + n, 1);
但我建议你改用std::vector
:
std::vector<int> R(n, 1);
不要使用memset(R, 1, sizeof(int) * n)
,因为它会为数组的每个字节(不是元素)分配1。
答案 2 :(得分:0)
for(int i = 0; i < n; i++){
R[i] = 1;
}
//don't forget to "delete[] R;"!
您可以使用矢量:
std::vector<int> R(n, 1);
但是数组和循环是最好的朋友,以防你无法使用向量。虽然建议使用vector,因为手动解除分配是由类处理的。