gpt4 book ai didi

c++ - 理解 vector 初始化的问题

转载 作者:行者123 更新时间:2023-11-30 03:16:22 26 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但有些事情我不太明白。使用 vector 时,每当我想将一个元素“推回”到某个位置时,只有以某种方式初始化 vector 时,我才能做到这一点。

例如当我使用这个初始化时:

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);
}

我在使用它时没有任何问题,并且可以在各种任务中实现它,但它让我很烦恼,因为我不确定它为什么能真正起作用。提前感谢您的帮助。

最佳答案

在第一个 block 中你应该使用:

std::vector<int> Myvec;
int size = 0;
int x = 0;
std::cin >> size;

for(int i = 0; i < size; i++)
{
std::cin >> x;
Myvec.push_back(x);
}

或者你可以使用:

int size = 0;
int x = 0;
std::cin >> size;
std::vector<int> Myvec(size);
for(int i = 0; i < size; i++)
{
cin>>Myvec[i];
}

并使用以下方法打印 vector :

for(int i = 0; i < size; i++) {
std::cout<< Myvec[i]<<" ";
}

当您使用 vector Myvec[size] 对其进行初始化时,它会变成大小为“size”的 vector 的 vector ,这意味着每个 Myvec[i] 都是一个 vector ,您可以在其中压入元素。

在这里阅读更多:https://www.geeksforgeeks.org/2d-vector-in-cpp-with-user-defined-size/

关于c++ - 理解 vector 初始化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56392898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com