boost::sizeもO2あたりの最適化を書けてやれば定数に収束するんでねーの、たぶん。