我试图编写将元素插入程序的程序,并将它们按字母顺序排序。之前要插入的元素会与另一个元素进行比较,直到它比已经插入的元素更多为止。假设使用.insert()
添加比较元素。我想在不使用排序算法的情况下实现它。
std::string name;
std::vector<std::string> students;
std::vector<std::string>::iterator beg = students.begin();
while (std::cin>>name){
for (std::vector<std::string>::iterator e = students.end() ; beg !=e ; ) {
if (!name.compare(*beg))
{
students.insert(beg, name);
break;
}
else
beg++;
}
}
为了避免迭代器无效,它指向最后一个元素,所以我会在每次迭代时对其进行更新。问题是在这部分代码之后,我检查了向量,但它为空。
对于空向量,begin
和end
相同,因此您永远不会插入任何内容。
尚不清楚为什么您不想使用排序算法,因此我将提出以下建议:
std::string name;
std::vector<std::string> students;
while (std::cin>>name){
students.push_back(name);
}
std::sort(students.begin(),students.end());
或者,用您喜欢的排序例程替换最后一行。