C++, 166 characters
#define o std::cout
void f(std::vector v){for(int i=0,b=0,z=v.size();iv[i]+1?b?o<<", ":o,(i-b?o<1?" - ":", "):o)<
Don't you all just love abusing the ?:
operator? ;)
More readable version:
#define o std::cout
void f(std::vector v){
for(int i=0,b=0,z=v.size();iv[i]+1 ?
b?o<<", ":o,
(i-b?o<1?" - ":", "):o)<