我想通过在C++中使用向量来获得用户输入,但我得到了无限循环



我是C++的新手。我想通过使用向量来获得用户输入。我将矢量大小设置为5。然而,我在for循环中得到了无限循环。如果有什么问题,请告诉我。提前谢谢。

int main() {
std::string name;
std::vector<std::string> stringVector (5);
for(int i = 0 ; i < stringVector.size(); i++)
{
std::cout << "Enter the name" << std::endl;
std::getline(std::cin, name);
stringVector.push_back(name);
}

}

std::vector<std::string>::push_back()插入一个新元素,即添加一个新元素并使大小增加一,因此您有一个无限循环。请注意,您希望循环在达到大小迭代后停止,但每次迭代的大小都会增加。您可以使用以下

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
int main() {
std::string name;
std::vector<std::string> stringsVector (5);
for(size_t i{} ; i < stringsVector.size(); i++)
{
std::cout << "Enter the name" << std::endl;
std::getline(std::cin, name);
stringsVector[i] = name;
}
std::for_each(stringsVector.cbegin(), stringsVector.cend(), [](auto & el){std::cout << el << " ";});
}

演示

当使用对象大小为5"字符串矢量(5(";不需要使用推回,否则它将使每个环路上的对象大小增加1个

使用简单的循环便于理解

#include <iostream>
#include <vector>
using namespace std;
int main() {
std::string name;
std::vector<std::string> stringsVector (5);
for(size_t i= 0 ; i < stringsVector.size(); i++)
{
std::cout << "Enter the name" << std::endl;
std::getline(std::cin, name);
stringsVector[i] = name;
}
for(size_t i= 0 ; i < stringsVector.size(); i++)
{
std::cout << stringsVector[i] << " ";
}
}

字符串向量stringVector.size() = 5初始化后,在每次迭代之后,大小增加CCD_ 3。

CCD_ 4被CCD_ 5初始化并且条件(i < stringVector.size()(总是被满足。这就是为什么你得到了无限循环。

相关内容

最新更新