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来做?总之是使用尽量少的代码优雅的来解决这个问题。
vector<T>::const_iterator first = m_vBtnsMenu.begin() + m_nLimit;
vector<T>::const_iterator last = m_vBtnsMenu.end();
vector<T> vecContractBtn(first, last);

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

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