repeat bei boost::assign verwenden
-
Hi,
ich habe folgende Code-Blocks:
vector<int> v; v += 1,repeat(10,4);und
vector<int> w; w += repeat(10,4);Den ersten kann man kompilieren, der zweite meldet
g++ -c -o jphmm_interface.o jphmm_interface.cpp -Wall -O3 -DNDEBUG -I/home/ingo/libs/boost -I/home/ingo/libs/gsl/include /home/ingo/libs/boost/boost/assign/list_inserter.hpp: In member function »void boost::assign_detail::call_push_back<C>::operator()(T) [with T = boost::assign_detail::repeater<int>, C = std::vector<int, std::allocator<int> >]«: /home/ingo/libs/boost/boost/assign/list_inserter.hpp:272: instantiated from »boost::assign::list_inserter<Function, Argument>& boost::assign::list_inserter<Function, Argument>::operator()(const T&) [with T = boost::assign_detail::repeater<int>, Function = boost::assign_detail::call_push_back<std::vector<int, std::allocator<int> > >, Argument = int]« /home/ingo/libs/boost/boost/assign/std/vector.hpp:31: instantiated from »boost::assign::list_inserter<boost::assign_detail::call_push_back<std::vector<_Tp, _Alloc> >, V> boost::assign::operator+=(std::vector<_Tp, _Alloc>&, V2) [with V = int, A = std::allocator<int>, V2 = boost::assign_detail::repeater<int>]« jphmm_interface.cpp:201: instantiated from here /home/ingo/libs/boost/boost/assign/list_inserter.hpp:68: Fehler: keine passende Funktion für Aufruf von »std::vector<int, std::allocator<int> >::push_back(boost::assign_detail::repeater<int>&)« /usr/include/c++/4.3/bits/stl_vector.h:686: Anmerkung: Kandidaten sind: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]Weiss jemand, wie man hier repeat zu verwenden hat?
-
repeatfunktioniert nur innerhalb eines Boost.Assign Ausdruckes. Man kann es nicht alleinstehend verwenden. Es gibt allerdings ein paar hilfreiche Memberfunktionen im Rückgabetyp vomboost::assign::list_of:#include <boost/assign.hpp> #include <vector> int main() { using namespace boost::assign; std::vector<int> v = list_of<int>().repeat(10, 4); return 0; }Grüssli
-
Dravere schrieb:
std::vector<int> v = list_of<int>().repeat(10, 4);Ich habe gerade festgestellt, dass das dazu fuehrt, dass v die Werte
0 4 4 4 4 4 4 4 4 4 4enthaelt.
Von daher: Weiss jemand, wie man das richtig (und moeglichst kurz) macht?
-
was möchtest du denn?
den vektor einfach nur mit 10 werten füllen, die alle 4 sind?
da gibts doch nen extra konstruktor für...std::vector<int> arr(10, 4); std::cout << "Inhalt:\r\n"; std::copy(arr.begin(), arr.end(), std::ostream_iterator<char>(std::cout, "\r\n")); std::cout << std::flush;bb