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

时间:2016-04-13 15:29:48

标签: c++ arrays vector compilation execution

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

我正在使用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;
}}

1 个答案:

答案 0 :(得分:0)

  

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

您无法向数组添加元素。数组永远不会有比第一次创建时更多或更少的元素。

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

在执行期间,您可以使用std::vector::push_backstd::vector拥有的其他成员函数之一。

作为旁注:在srand的每次其他来电之前致电rand是一种很好的方法,可以确保rand返回的数字完全不是随机的。其次rand() % 20 + 1不是&#34;介于1和100之间&#34;正如评论所说。第三,你毫无意义地覆盖了循环中的元素。第四,在使用它们之前,你没有初始化randNum指向的数组中的所有元素。