【发布时间】:2019-05-31 10:01:57
【问题描述】:
这可能是一个愚蠢的问题,但有些东西我不太明白。使用向量时,每当我想将一个元素“推回”到某个位置时,只有以某种方式初始化向量时,我才能做到这一点。
例如当我使用这个初始化时:
std::vector<int> Myvec;
int size = 0;
int x = 0;
std::cin >> size;
for(int i = 0; i < size; i++)
{
std::cin >> x;
Myvec[i].push_back(x);
}
我收到以下错误: 请求'Myvec.std::vector<_tp _alloc>::operator[] >(((std::vector::size_type)i))'中的成员'push_back',它是非类类型'__gnu_cxx ::__alloc_traits >::value_type {aka int}'|
但是当我使用以下初始化时它可以工作:
int size = 0;
int x = 0;
std::cin >> size;
std::vector<int> Myvec[size];
for(int i = 0; i < size; i++)
{
std::cin >> x;
Myvec[i].push_back(x);
}
我在使用它时没有任何问题,并且可以在各种任务中实现它,但它困扰着我,因为我不确定它为什么实际工作。提前感谢您的帮助。
【问题讨论】:
-
使用
MyVec.push_back(x)代替MyVec[i].push_back(x)。MyVec[i]是(引用)int,因此没有push_back()操作。