【发布时间】:2020-06-13 18:58:34
【问题描述】:
#include <iostream>
using namespace std;
class vector{
private:
int *arr;
int n;
public:
vector(int a, int n){
for(int i = 1; i <= n; i ++)
arr[i] = a;
}
vector(){
for(int i = 1; i <= n; i ++)
arr[i] = 0;
}
void reactualizare_vector(int t, int m){
n = t;
for(int i = 1; i <= n; i ++)
arr[i] = m;
}
void afis_vector(){
for(int i = 1; i <= n; i ++)
cout << arr[i] << " ";
}
void citire_vector(int n){
for(int i = 1; i <= n; i ++)
cin >> arr[i];
}
};
int a, n, t, m;
int main()
{
cin >> a >> n;
vector p(a, n);
p.citire_vector(n);
p.afis_vector();
return 0;
}
输入:2 4 2 1 4 3
输出:2 1 4 3 0 0 0 0 1952810132 2543616 1952810096 -594764666 6422492 2002010568 2543616 -1294838125 0 0 2543616 0 0 0 0 -1294838125 6422432 0 6422500 2002070528 -974236977 0 6422508 2002010520 -1 2002121555 0 0 4199136 2543616 0
如何调整向量的大小以不显示 2 1 4 3 之后的内容?
【问题讨论】:
-
你有一个指针
arr,但是它指向哪里?你永远不会让它指向任何地方,这意味着arr将未初始化并且具有不确定的值。当您取消引用它时,您将有未定义的行为。也许是时候投资a couple of good books,或者阅读您关于动态分配的教程或课堂笔记。 -
在C++ programming 上阅读一本好书。阅读一些C++ tutorial。见一些C++ reference site。使用standard containers
-
并且成员
n从未初始化。 -
如果使用GCC 编译所有警告和调试信息,那么使用
g++ -Wall -Wextra -g -
一些注意事项:不要使用
using namespace std;并学习用英文命名变量/方法/函数:例如show_vector比afis_vector好得多,以此类推。
标签: c++ oop vector constructor size