爲了避免後面的逗號,循環,直到v.end() - 1,輸出v.back()例如:
#include <vector>
#include <iostream>
#include <iterator>
#include <string>
#include <iostream>
template <class Val>
void Out(const std::vector<Val>& v)
{
if (v.size() > 1)
std::copy(v.begin(), v.end() - 1, std::ostream_iterator<Val>(std::cout, ", "));
if (v.size())
std::cout << v.back() << std::endl;
}
int main()
{
const char* strings[] = {"A", "B", "C", "D"};
Out(std::vector<std::string>(strings, strings + sizeof(strings)/sizeof(const char*)));
const int ints[] = {1, 2, 3, 4};
Out(std::vector<int>(ints, ints + sizeof(ints)/sizeof(int)));
}
BTW你貼:
vector<string> v;
//...
for (vector<int>::iterator it = v.begin(); //...
這是不太可能編譯:)
你忘了''' – 2011-03-13 04:09:33
謝謝,羅布。你很快。這正是我需要的。 – AndrewS 2011-03-13 04:10:03
剛剛添加的循環版本爲整個字符串添加了尾隨逗號。 – 2011-03-13 04:10:37