C++ 按字母顺序插入向量

C++ 按字母顺序插入向量,c++,vector,insert,C++,Vector,Insert,我正在尝试按字母顺序插入此向量(mCards)。我不能使用排序-它必须按字母顺序插入!现在…我正在反向插入。我想不出如何让它以正确的字母顺序插入!!有人能帮我吗? 谢谢大家! void Rolodex::Add(Card& card) { vector<Card>::iterator temp; if (mCards.size() != 0) { for(vector<Card>::

我正在尝试按字母顺序插入此向量(mCards)。我不能使用排序-它必须按字母顺序插入!现在…我正在反向插入。我想不出如何让它以正确的字母顺序插入!!有人能帮我吗? 谢谢大家!

void Rolodex::Add(Card& card)
    {
        vector<Card>::iterator temp;

        if (mCards.size() != 0)
        {
            for(vector<Card>::iterator it = mCards.begin(); it != mCards.end(); ++it)
            {
                Card& currentCard = *it;
                temp = it;
               int compareResult = currentCard.GetLastName().compare(card.GetLastName());
                if (compareResult <= 0)
                {
                    mIteratorNumber = it - mCards.begin();
                    mCards.insert(temp, card); 
                    return;
                }

            }
        }
        else
        {
            mCards.push_back(card);
            for(vector<Card>::iterator it = mCards.begin(); it != mCards.end(); ++it)
            {
                mIteratorNumber = it - mCards.begin();  
            }
        }
    }
void Rolodex::添加(卡片和卡片)
{
向量::迭代器温度;
如果(mCards.size()!=0)
{
对于(vector::iterator it=mCards.begin();it!=mCards.end();++it)
{
卡片¤tCard=*it;
温度=它;
int compareResult=currentCard.GetLastName().compare(card.GetLastName());

if(compareResult如果您想要一个已排序的容器,如果您可能有重复的值,您可以查看and或其多变量

要插入到已排序的向量中,正确的方法是使用


如果卡没有有效的<代码>操作员,为什么不能使用排序?它必须被“插入”到字母位置。这是一个家庭作业。考虑<代码> STD::MAP<代码>,其中密钥是卡的名字。啊,是的,作业,教你如何写坏代码,你可能不得不支付特权。

myCards.insert( std::upper_bound( begin(myCards), end(myCards), card), card );
auto it = std::upper_bound( begin(myCards), end(myCards), card,
                            [] ( Card const & a, Card const & b ) {
                                return a.GetLastName().compare(b.GetLastName()) < 0;
                            } );
myCards.insert( it, card );