2015-04-01 59 views
0

在Python中,如果我有一些列表L,並且我想要它的第一個x元素,我將調用L [:x]。在C++中,我使用矢量,但我不知道任何簡單的方法來調用矢量的第一個x元素。C++中的Python列表[:x]等價於什麼?

+0

你可以用做['標準:: list'(HTTP:// EN .cppreference.com/w/cpp/container/list),使用['splice'](http://en.cppreference.com/w/cpp/container/list/splice)函數。 – 2015-04-01 15:18:44

回答

3

有幾種方法:

1)創建向量v由第一x元素爲:

std::vector<T> v { begin(L), begin(L) + x }; 

2)通第一x元素的函數,如對迭代器:

f(begin(L), begin(L) + x); 

其中f接受兩個迭代器作爲參數—探索,standard algorithms,因爲幾乎所有的人都在迭代器對上工作。

根據您的使用情況,您可以使用其中任何一種。

0

如果你願意使用升壓,那麼升壓範圍有boost::slice;這是相當類似的Python:

auto first_x = L | sliced(0, x); 

而且看到自己的文檔頁面的完整的例子:

#include <boost/range/adaptor/sliced.hpp> 
#include <boost/range/algorithm/copy.hpp> 
#include <boost/assign.hpp> 
#include <iterator> 
#include <iostream> 
#include <vector> 

int main(int argc, const char* argv[]) 
{ 
    using namespace boost::adaptors; 
    using namespace boost::assign; 

    std::vector<int> input; 
    input += 1,2,3,4,5,6,7,8,9; 

    boost::copy(
     input | sliced(2, 5), 
     std::ostream_iterator<int>(std::cout, ",")); 

    return 0; 
} 

// 3,4,5, 
相關問題