Форум программистов, компьютерный форум CyberForum.ru

Двумерный вектор, ошибка - C++

Восстановить пароль Регистрация
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
27.08.2013, 19:22     Двумерный вектор, ошибка #1
Здраствуйте! Почему я так не могу определить размер двумерного вектора?
Подчеркивает красным 2 числа 9 и пишет ошибку Expected a type specifier.
C++
1
2
3
4
class А
{
private:
    vector < vector<int> > mas(9,9);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
d1skort
20 / 20 / 0
Регистрация: 10.02.2013
Сообщений: 75
27.08.2013, 19:49     Двумерный вектор, ошибка #2
C++
1
vector<vector<T> > a(n, vector<T>(m));
Belfegor
27.08.2013, 19:50
  #3

Не по теме:

Цитата Сообщение от ovner Посмотреть сообщение
vector < vector<int> > mas(9,9);
хммм
думаю так двумерный, а может и ошибаюсь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
using std::vector;
 
int main() {
    const int col = 3, row = 3;
    vector < vector<int >> v;
    v.resize(col, vector<int>(row));
    for (int i = 0; i < col; i++) {
        for (int j = 0; j < row; j++) {
            v[i][j] = i + j;
        }
    }
    for (int i = 0; i < col; i++) {
        for (int j = 0; j < row; j++) {
            std::cout << v[i][j] << ' ';
        }
        std::cout << '\n';
    }
    return 0;
}

ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
27.08.2013, 19:58  [ТС]     Двумерный вектор, ошибка #4
Но если я пишу такое в main то все работает нормально и нет ошибки.
C++
1
2
3
4
5
void main()
{
     vector < vector<int> > mas(9,9); 
     mas[1][5] = 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.08.2013, 20:34     Двумерный вектор, ошибка #5
1) Второй параметр конструктора должен имеет тип vector<int>(тип хранимых в векторе элементов), а не int
2) Так вызвать конструктор не получится, если вам нужна инициализация по умолчанию(работает начиная с C++11), то необходимо использовать фигурные скобки вместо круглых
C++
1
2
3
4
//...
private:
  vector < vector<int> > mas { 9, vector<int>(9) };
//...
в противном случае придётся использовать список инициализации
C++
1
2
3
4
5
6
7
8
9
10
//...
private:
  vector < vector<int> > mas;
 
public:
  A()
  : mas(9, vector<int>(9))
  {
  }
//...
Добавлено через 27 минут
Цитата Сообщение от ovner Посмотреть сообщение
Но если я пишу такое в main то все работает нормально и нет ошибки.
Это можно объяснить только неявным преобразованием 9 к vector<int>(9)(хотя по стандарту этот конструктор должен быть объявлен как explicit). Это ошибка в любом случае, так писать не следует.
Yandex
Объявления
27.08.2013, 20:34     Двумерный вектор, ошибка
Ответ Создать тему
Опции темы

Текущее время: 11:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru