вставлять и удалять целые числа на лету

0

Я новичок в C++, и мне было интересно, как вы собираетесь вставлять и удалять элементы "на лету" из массива. Например:

>> insert(1)
[1]
>> insert(2)
[1,2]
>> delete()
[1]

Меня не интересуют какие-либо библиотеки на данный момент, когда я просто хочу понять основные принципы работы C++. Следует также упомянуть, что для начала массив не имеет значений.

Теги:

4 ответа

3
Лучший ответ

Поскольку вы не заинтересованы в контейнерах STL (хотя я бы посоветовал вам изучить его, например, для vector), объявите массив любого максимального размера, который вы хотите

int arr[10];

Теперь получить доступ к элементам в массиве путем индексации и присвоить значение

arr[0] = 5;   //indexes start from 0 and in this case till 9

Или сохраните переменную для индекса как

int index = 0;

При вставке используйте:

arr[index] = value;
index++;

Создавая элемент в массиве, просто уменьшите индекс, чтобы указать, что последующие индексы свободны для заполнения.

РЕДАКТИРОВАТЬ:

См. Следующий код:

#include<iostream>
using namespace std;
int main()
{
    int arr[10];
    int choice;
    int num;
    int index = 0;
    do
    {
        cout<<"enter you choice:\n";
        cout<<"1. add number\n";
        cout<<"2. delete number\n";
        cout<<"3. display memory\n";
        cout<<"anything else to exit\n";
        cin>>choice;
        switch(choice)
        {
        case 1:
            if(index==10)
            {
                cout<<"no more space available\n";
            }
            else
            {
                cout<<"enter number: ";
                cin>>num;
                arr[index++] = num;
            }
            break;
        case 2:
            if(index==0)
            {
                cout<<"memory empty\n";
            }
            else
            {
                cout<<"item deleted!\n ";
                index--;
            }
            break;
        case 3:
            for(int i = 0;i<index;i++)
            {
                cout<<arr[i]<<'\t';
            }
            cout<<endl;
            break;
        default:
            cout<<"exiting.......";
        }
    }while(choice>0 && choice<4);
}
  • 0
    Можете ли вы показать мне простую функцию, которая вставляет, а также запоминает индекс, поэтому, если пользователь вводит другой номер снова, он не переопределяет arr [0]
  • 0
    Я попробовал это, и это не сработало pastebin.com/6wYtuu58
Показать ещё 9 комментариев
2

Используйте std::vector.

Вы можете использовать push_back для вставки в обратную сторону вектора и pop_back для удаления последнего элемента.

Пример:

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> numbers;
    numbers.push_back(1)
    numbers.push_back(2);
    numbers.pop_back();

    for (int i : numbers) { // c++11 range-based for loop
        std::cout << i << '\n';
    }
}

Печатает 1, как в вашем примере.

0

В фундаментальных принципах C++ нет ничего подобного, вам нужно использовать библиотеку (или, естественно, написать свою собственную библиотеку). Стандартная библиотека, которую вы получаете с каждой реализацией C++, имеет класс std::vector который делает то, что вы хотите.

#include <vector>

int main()
{
    std::vector<int> a;
    a.push_back(1);
    a.push_back(2);
    a.pop_back();
}
0

взгляните в std::vector

std::vector<int> arr;
arr.push_back(1);
arr.push_back(2);
arr.pop_back();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню