v <int>pos (MAX) v <int>tmp, который не относится к типу класса '__gnu_cxx :: __ alloc_traits:: value_type {aka int} 'pos [i] .push_back (tmp); - PullRequest
0 голосов
/ 01 июня 2019

C ++ (STL):

Request for member ‘push_back’ in ‘pos.std::vector<int>::operator[](((std::vector<int>::size_type)i))’, which is of non-class type ‘__gnu_cxx::__alloc_traits<std::allocator<int> >::value_type {aka int}’
   pos[i].push_back(tmp);
vector<int> pos(MAX), vector<int> tmp;

Я не могу понять, почему мой код работает неправильно.Итак, скажите, пожалуйста, почему возникает эта ошибка

Цель: я не могу дать весь код, так как столкнулся с проблемой сейчас, только во время кодирования решения части кода в текущем конкурсе.Пожалуйста, просто скажите мне об этой ошибке.Тогда все мои другие части кода будут работать нормально.

МОЙ КОД:

/*
 Name: SUSHANT OBEROI
 College: MNNIT ALLAHABAD
 Email: sushantoberoi3@gmail.com
 Handle: soc3
*/

#include<bits/stdc++.h>
using namespace std;

#define sd(a) scanf("%d", &a)
#define slld(a) scanf("%lld", &a)
#define fl(i, a, b) for(int i=a; i<b; i++)
#define fle(i, a, b) for(int i=a; i<=b; i++)
#define ll long long
#define wl(q) while(q--)
#define MAX 300005
#define mp make_pair
#define fi first
#define se second
#define mod 1000000007

void print_output() {                                                                               
    vector<int> pos(MAX);
    fl(i, 0, 100) {
        pos[i].clear();
        vector<int> tmp;
        fl(j, 0, 100) 
            tmp.push_back(j);
        pos[i].push_back(tmp);
    }
}

int main() {
    print_output();
    return 0;
}

Я думаю (только по мне, я не знаю, каков правильный ответ?), Чтоя делаю это правильно, но компилятор не так.(Извините за это, но я думаю).

1 Ответ

0 голосов
/ 01 июня 2019

Вы определили vector<int> pos(MAX);, который является вектором int.Выражение pos[i] возвращает ссылку на элемент вектора, который в данном случае является int.Оператор pos[i].push_back(tmp); пытается вызвать push_back() функцию-член для int, которая не является классом и не имеет этой функции-члена.

Возможно, вы намеревались создать vector<vector<int>> pos(MAX);, aвектор векторов.Я не знаю, и после просмотра #include<bits/stdc++.h> и этих #define строк я не заинтересован в остальной части кода.

...