Проблема Вектора C++. Программа администратора компьютерной лаборатории

Эта программа должна отслеживать используемые и пустые компьютеры внутри 4 лабораторий. Каждая лаборатория имеет разное количество компьютерных станций, поэтому мне пришлось использовать неровные массивы, я не знаю, правильно ли я их реализовал, так как это первый раз, когда я работаю с указателями и векторами. При компиляции возникают следующие ошибки:

labadmin.cpp: In function ‘int main()’:
labadmin.cpp:56:35: error: cannot convert ‘std::vector<int>’ to ‘station2 {aka int*}’ in initialization
      station2 store = labs[lab - 1];
                                   ^
labadmin.cpp:64:27: error: cannot convert ‘std::vector<int>’ to ‘station2 {aka int*}’ in initialization
    station2 store = labs[x];
                           ^
labadmin.cpp:89:30: error: cannot convert ‘std::vector<int>’ to ‘station2 {aka int*}’ in initialization
       station2 store = labs[x];

Так чего же мне не хватает?

#include <iostream>
#include <vector>
using namespace std;

const int AVAILABLE_LABS = 4;
int *labs[AVAILABLE_LABS];
int capacity[AVAILABLE_LABS];
typedef int *station2;

int main()
{

  vector <int> labs[AVAILABLE_LABS];
  labs[0].push_back(1); labs[0].push_back(2); labs[0].push_back(3); 
  labs[0].push_back(4); labs[0].push_back(5);

  labs[1].push_back(1); labs[1].push_back(2); labs[1].push_back(3);
  labs[1].push_back(4); labs[1].push_back(5); labs[1].push_back(6);

  labs[2].push_back(1); labs[2].push_back(2); labs[2].push_back(3); 
  labs[2].push_back(4);

  labs[3].push_back(1); labs[3].push_back(2); labs[3].push_back(3);

  int choice;
  cout << "Choose a number according to the option you would like to execute.n";
  cout << "0: Exitn" << endl;
  cout << "1: Log in/Log offn" << endl;
  cout << "2: Searchn" << endl;
  cin >> choice;

  int id, id2, lab, station;

  switch(choice){
  case 0:
    cout << "Goodbye.n"; 
    break;
  case 1:
    cout << "LOG IN/LOG OFFn";
    cout << "ID Number (if you wish to log off, enter 0)n";
    cin >> id;
    cout << "Enter lab number:n";
    cin >> lab;
    cout << "Enter computer station number:n";
    cin >> station;
    break;
  case 2:
    cout << "SEARCHn";
    cout << "User id:n";
    cout << id2;
      break;
  }

  if (choice == 1)
    {
     station2 store = labs[lab - 1];
      store[station - 1] = id;
    }
  else if (choice == 2)
    {

      for(int x = 0; x < AVAILABLE_LABS; x++)
    {
      station2 store = labs[x];
      for(int y= 0; y < capacity[x]; y ++)
        {
          if(store[y] == id)
        {
          lab = x + 1;
          station = y + 1;
        }
        }
    }
      if(lab != 0 && station != 0)
    {
      cout << "ID: " << id
           << "At station: " << station
           << "At lab: " << lab << endl;
    }
      else 
    {
      cout << "No user logged in.n";
    }
    }

  for(int x = 0; x < AVAILABLE_LABS; x++)
    {
      cout << "Lab " << x + 1 << ": ";
      station2 store = labs[x];

      for(int y = 0; y < capacity[x]; y++)
    {
      cout << "Station" << y + 1 << ": ";
      if(store[y] == 9)
        {
          cout << "EMPTY ";
        }
      else {
        cout << store[y] << " ";
      }
    }
      cout << endl;
    }

  return 0;
}

Спасибо заранее.

1 ответ

  1. Чтобы исправить ошибки компиляции, выполните следующие действия:

    Прокомментируйте объявление c-array labsв строке 6, так как в зависимости от платформы, на которой вы находитесь, это может привести к ошибке переопределения. В Windows это определение labsконфликтует с определением функции labs(long _X)найденной в math.h, который является заголовком библиотеки, предоставляемой корпорацией Майкрософт.

    Затем измените typedef station2на следующий:

    typedef std::vector<int> station2;
    

    Это должно исправить проблемы компиляции.

    Удачи с остальной частью программы.