【发布时间】:2019-06-25 20:14:25
【问题描述】:
我需要帮助,改变大小和arr,在主函数中动态分配内存(动态分配)
这个程序对第一个程序使用循环整数,而类和结构是第二个程序
program_1
#include <iostream>
#include <iterator>
using namespace std;
void display_desc(const int arr[], int size)
{
int copy_arr[size];
copy(arr, arr + size, copy_arr);
int temp;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (copy_arr[i] > copy_arr[j]) {
temp = copy_arr[i];
copy_arr[i] = copy_arr[j];
copy_arr[j] = temp;
}
}
}
for (int i = 0; i < size; i++) {
cout << copy_arr[i] << " ";
}
cout << endl;
}
int main()
{
int size = 5;
int arr[size];
for (int i = 0; i < size; i++) {
arr[i] = i;
}
display_desc(arr, size);
}
和 程序_2 更改 int main() 中的变量以使用动态内存分配
#include <iostream>
#include <iterator>
#include <windows.h>
using namespace std;
const int SLOT_ROOM = 5;
class Person {
public:
Person()
{
name = "";
}
Person(string names)
{
name = names;
}
void set_name(string names) { name = names; }
string get_name() { return name; }
private:
string name;
};
struct Slot {
bool blank;
Person person;
};
class rental {
public:
Slot used[SLOT_ROOM];
rental()
{
for (int i = 0; i < SLOT_ROOM; i++) {
Person person;
used[i].person = person;
used[i].blank = true;
}
}
int in(const Person person)
{
for (int i = 0; i < SLOT_ROOM; i++) {
if (used[i].blank) {
used[i].blank = false;
used[i].person = person;
cout << "used in position " << i << endl;
return i;
}
}
cout << "the rental is full" << endl;
return -1;
}
bool out(int i)
{
used[i].blank = true;
}
Slot* get_rental_list()
{
return used;
}
void print_person_list()
{
cout << endl
<< "List rental" << endl;
for (int i = 0; i < SLOT_ROOM; i++) {
cout << "Slot rental to " << i << endl;
cout << "Name: " << used[i].person.get_name() << endl;
cout << "Avail: " << used[i].blank << endl
<< endl;
}
}
private:
int SLOT_ROOM = 2;
string time_rental;
};
int main()
{
rental rental;
Person person_1("make");
Person person_2("angel");
rental.in(person_1);
rental.in(person_2);
rental.print_person_list();
rental.out(2);
rental.print_person_list();
rental.in(person_2);
rental.print_person_list();
}
请帮忙,我不明白如何使用动态内存分配
我还在学c++
【问题讨论】:
-
您的代码在技术上是无效的,因为 C++ 没有 variable-length arrays,它是 一些 编译器可能以不可移植的方式添加的扩展。请改用
std::vector。使用std::vector也是任何一种“动态数组”的标准解决方案。 -
我可能错了,但最后我检查了,C++ 中的动态内存分配需要使用
new。 -
@JoeyMallone 自 STL 时代以来,情况并非如此 :)
-
@LightnessRacesinOrbit,是的,我的声明中有这样的警告。我只是想说,OP 混淆了“动态内存分配”,它需要
new(即使new发生在STL 容器内),以及可变长度数组(VLA)。至少,这是我从 OP 的代码中感受到/理解的。
标签: c++ dynamic-memory-allocation