vector赋值的问题,将一个容器的一部分赋值到另一个容器
vector<CButton*>::iterator itBtnsMenu = m_vBtnsMenu.begin();

int nTmp = 0;
for (; itBtnsMenu != m_vBtnsMenu.end(); itBtnsMenu++)
{
    if (nTmp++ >= m_nLimit)
    {
        CButton* btn = *itBtnsMenu;
        vecContractBtn.push_back(btn);
    }
}

现在是这样赋值。能不能使用Insert来做?总之是使用尽量少的代码优雅的来解决这个问题。

3个回答

vector<T>::const_iterator first = m_vBtnsMenu.begin() + m_nLimit;
vector<T>::const_iterator last = m_vBtnsMenu.end();
vector<T> vecContractBtn(first, last);
dongguxidu1
崖高人远 谢谢~
4 年多之前 回复

if (m_nLimit <= m_vBtnsMenu.size())
vecContractBtn.insert(vecContractBtn.begin(), m_vBtnsMenu.begin()+m_nLimit, m_vBtnsMenu.end());

dongguxidu1
崖高人远 谢谢~
4 年多之前 回复

你直接swap应该也是金额育德

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐