我有一个用于执行各种数组操作的类。我喜欢在我的populate方法中使用我的insert方法。 有人可以指导我吗?这是代码:
#include <iostream>
#include <cstdlib>
using namespace std;
const int MAX=5;
class array
{
private:
int arr[MAX];
public:
void insert(int pos, int num);
void populate(int[]);
void del(int pos);
void reverse();
void display();
void search(int num);
};
void array::populate(int a[])
{
for (int i=0;i<MAX;i++)
{
arr[i]=a[i];
}
}
void array::insert(int pos, int num)
{
for (int i=MAX-1;i>=pos;i--)
{
arr[i] = arr[i-1];
arr[i]=num;
}
}
void array::del(int pos)
{
for (int i=pos;i<MAX;i++)
{
arr[pos]=arr[pos + 1];
}
}
void array::display()
{
for (int i=0;i<MAX;i++)
cout<<arr[i];
}
void array::search(int num)
{
for (int i=0;i<MAX;i++)
{
if (arr[i]==num)
{
cout<<"\n"<<num<<" found at index "<<i;
break;
}
if (i==MAX)
{
cout<<num <<" does not exist!";
}
}
}
int main()
{
array a;
for (int j=0;j<MAX;j++)
{
a.insert(j,j);
}
a.populate(a);
a.insert(2,7);
a.display();
a.search(44);
system("pause");
}
答案 0 :(得分:3)
我喜欢在我的插图中使用我的插入方法 填充方法。有人可以指导我 那个?
这意味着,不是直接而有效的“从一个数组复制到另一个数组”方法,而是使用正确的索引代替赋值,为输入的每个值调用insert。
从方法内部调用当前实例上的方法:
insert(x, y);
//or
this->insert(x, y);
您的代码也包含错误,因为您传递了错误的类型以填充main。它期望int*
(一个真正的数组),而不是array
对象。
答案 1 :(得分:2)
请详细说明您的问题。如果您只需要一个好的容器,请查看STL(标准模板库)std :: vector。它是C ++标准的一部分,随编译器一起提供。
如果您想学习如何编写自定义课程,请在您的问题中尝试更精确。
还要考虑网上提供的丰富的初学者教程,例如:
这是一个关于如何编写自定义类的小例子,其中一个成员函数调用另一个成员函数并访问私有数据成员(请注意,在成员函数内部,您可以直接引用任何其他成员):
#include <iostream>
class Example
{
private:
int some_private_stuff;
public:
Example();
void function_a();
void function_b();
};
Example::Example(){
some_private_stuff = 1;
}
void Example::function_a(){
std::cout << "this is function a" << std::endl;
some_private_stuff = 2;
std::cout << "changed private_stuff to " << some_private_stuff << std::endl;
}
void Example::function_b(){
std::cout << "this is function b" << std::endl;
function_a();
}
int main() {
Example e;
e.function_b();
return 0;
}