我需要编写一个函数:
我已经在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++;
}
}
}
答案 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;
}