muszę napisać sam kod zależny od kompilacji stałym parametrem, coś jak:Makro powtórzyć prawie taki sam kod
map["text 0"] = vec[0];
map["text 1"] = vec[1];
...
map["text n"] = vec[n];
Problem polega na tym, że nie wiem n
kiedy piszę kod , Otrzymuję go jako parametr szablonu. Oczywistym rozwiązaniem jest użycie jednej pętli i wygenerowanie "text k"
wewnątrz pętli i użycie vec[k]
, ale ma to wpływ na środowisko wykonawcze, kiedy powinno to być zrobione w czasie kompilacji. Innym rozwiązaniem byłoby specjalizacja funkcji dla różnych wartości N
, ale w ten sposób będę musiał napisać ten sam kod ręcznie kilka razy i nie ma powodu, aby go szablon.
Wiem, że istnieją pewne inteligentne makra, które mogą powtarzać podobne rzeczy N razy (jak rodzina makr BOOST_PP_REPEAT
), ale nie mogę znaleźć jednego rozwiązania dla mojego konkretnego problemu.
Czy masz jakieś rozwiązanie tego problemu?
można używać C++ 11? – jrok
@jrok Tak, ale nie wszystkie funkcje (VS2010 i najnowszy kod Xcode) – Felics
Prawdopodobnie szablony i pętle mogły zostać zoptymalizowane przez kompilator. –