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