如何在C ++中将元素推入数组?

时间:2016-11-11 12:51:56

标签: c++ arrays function push

我需要编写一个函数:

  1. 查看50到100之间的所有数字
  2. 检查哪些数字可被6整除
  3. 将这些数字添加到数组
  4. 写出那个数组
  5. 写入该数组中有多少元素
  6. 我已经在c ++中搜索了一个函数push,但看起来没有...

    到目前为止,还没开始......

    int pushIntoArray(int array[], int size){
        int index = 0;
        int newArray[100];
    
        for (int i=0; i<=size; i++){
            if(array[i] % 6 == 0 && array[i] <= 100 && array[i] >= 50){
                newArray[index] = array[i];
                index++;
            }
        }
    }
    

2 个答案:

答案 0 :(得分:2)

你不能。 ir C ++(也是C)的数组是固定大小的。并且有充分的理由。它们是一个非常低级的概念,非常类似于指针。数组的内存在开始时分配一次,之后不会更改。数组只是内存中的一堆字节。

A&#34;推&#34;操作需要更改数组的大小,这意味着分配新内存,从旧内存中复制内容,以及删除旧内存。这就是简单的非优化版本。

所以,不,数组不能这样做。但是,标准库包含一个std::vector类,它正是这样做的。这就是你想要的那个。

答案 1 :(得分:0)

如评论中所述,当数组的大小未修复时,请使用std::vector

并在下面的代码中使用tham:

#include <iostream>
#include <vector>

std::vector<int> pushIntoVector(std::vector<int> values) {
    std::vector<int> result; //A vector of integers

    for (int a : values) // Goes through each values of the vector   
       if (a <= 100 && a >= 50 && !(a % 6)) {
            std::cout << a << "\n";
            result.push_back(a);
        }
    std::cout << result.size() << "\n";
    return result;
}

int main()
{
    std::vector<int> vec;
    vec.push_back(36); //Not printed: < 50
    vec.push_back(60); //Printed
    vec.push_back(72); //Printed
    vec.push_back(90); //Printed
    vec.push_back(91); //Not printed: 91%6 != 0
    vec.push_back(105); //Not printed: > 100

    pushIntoVector(vec); //Do whatever you want with the returned vector
    while (1);
    return 0;
}