如何在执行/编译(c++)时将元素添加到数组/向量中



我有这个代码,我已经生成了两次随机数数组。。。现在,我只想在执行时将这些数字插入到向量中。

我正在使用Microsoft Visual Studio。

这是我的代码:

using namespace std;
int main() {
int gRows, gCols;
std::cout << "Enter Rows: " << std::endl;
std::cin >> gRows;
std::cout << "Enter Cols: " << std::endl;
std::cin >> gCols;
std::vector<std::vector<int>> cGrid;
int numOfElem = gRows*gCols;
int* randNum = new int[numOfElem];
for (int x = 0; x < (numOfElem / 2); x++) {
    srand((unsigned int)time(0));
    const int fNum = rand() % 20 + 1; //generate num between 1 and 100
    const int sNum = rand() % 20 + 1;
    randNum[x] = fNum;
    randNum[x + 2] = sNum;
}
for (int y = 0; y < numOfElem; y++) {
    std::cout << randNum[y] <<std::endl;
}
//int i = 0;
for (int nRows = 0; nRows < gRows; nRows++) {// for every row and column
    for (int nCols = 0; nCols < gCols; nCols++) {
        cGrid[gRows][gCols] = 0;//card at that coordinate will be equal to
        std::cout << cGrid[gRows][gCols];
        //i = i + 1;
    }
    std::cout << std::endl;
}}

如何在执行/编译(c++)时将元素添加到数组/向量中?

不能向数组中添加元素。数组的元素永远不会比刚创建时多或少。

您可以通过使用构造函数在"编译时"向向量中添加元素。从技术上讲,除非编译器进行了一些优化,否则元素仍然会在运行时添加。

在执行过程中,您可以使用std::vector::push_backstd::vector具有的其他成员函数之一。

顺便说一句:在每隔一次呼叫rand之前呼叫srand是确保rand返回的数字不是随机的好方法。其次,rand() % 20 + 1并不像评论所说的那样"在1到100之间"。第三,无意义地覆盖循环中的元素。第四,在使用randNum之前,您没有初始化数组中的所有元素。

最新更新