如何实现元素向矢量的后续添加,在插入之前对它们进行排序?

问题描述 投票:-1回答:1

我试图编写将元素插入程序的程序,并将它们按字母顺序排序。之前要插入的元素会与另一个元素进行比较,直到它比已经插入的元素更多为止。假设使用.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++;      
         }
    }

为了避免迭代器无效,它指向最后一个元素,所以我会在每次迭代时对其进行更新。问题是在这部分代码之后,我检查了向量,但它为空。

c++ vector stl
1个回答
0
投票

对于空向量,beginend相同,因此您永远不会插入任何内容。

尚不清楚为什么您不想使用排序算法,因此我将提出以下建议:

std::string name;
std::vector<std::string> students;
while (std::cin>>name){
    students.push_back(name);
}
std::sort(students.begin(),students.end());

或者,用您喜欢的排序例程替换最后一行。

© www.soinside.com 2019 - 2024. All rights reserved.