gpt4 book ai didi

C++将整数数组分配给相同大小的空整数数组

转载 作者:太空狗 更新时间:2023-10-29 23:46:52 24 4
gpt4 key购买 nike

我非常熟悉 Java,这是允许的。但是看起来它不适用于 C++。尝试分配 valuesToGrab = updatingValues; 时出现“无效数组分配”。

//these are class attributes
int updatingValues[361] = {0};
int valuesToGrab[361] = {0};

//this is part of a function that is causing an error.
for (unsigned int i=0; i < 10; i++) {

//this fills values with 361 ints, and num_values gets set to 361.
sick_lms.GetSickScan(values,num_values);

//values has 361 ints, but a size of 2882, so I copy all the ints to an array
//of size 361 to "trim" the array.
for(int z = 0; z < num_values; z++){
updatingValues[z] = values[z];
}

//now I want to assign it to valuesToGrab (another program will be
//constantly grabbing this array, and it can't grab it while it's being
//populated above or there will be issues
valuesToGrab = updatingValues; // THROWING ERROR
}

我不想迭代 updatingValues 并将其一一添加到 valuesToGrab,但如果必须的话,我会的。有没有一种方法可以用 C++ 在一个函数中分配它?

谢谢,

最佳答案

C++ 中复制的标准用法是

#include <algorithm>
...
std::copy(values, values+num_values, updatingValues);

确保 updatingValues 足够大,否则会发生超限和坏事。

也就是说,在 C++ 中我们通常使用 std::vector 来完成此类任务。

#include <vector>
...
std::vector<int> updatingValues=values; //calls vectors copy constructor

I vector 做数组做的所有事情(包括 C++11 中的静态初始化),但有一个定义良好的接口(interface)。带有迭代器、大小、空、调整大小、push_back 等。

http://en.cppreference.com/w/cpp/algorithm/copy

http://en.cppreference.com/w/cpp/container/vector

编辑还值得注意的是,您可以组合 vector 和数组。

std::vector<int> vect(my_array, my_array+10);
//or
std::vector<int> another_vector;
...
another_vector.assign(my_array, my_array+10);//delayed population

反之亦然

std::copy(vect.begin(), vect.end(), my_array); //copy vector into array.

关于C++将整数数组分配给相同大小的空整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com