0

我希望有人可以就我遇到的特定问题提供一些见解。我正在编写一个程序,它接收整数,将它们存储在一个向量中,并用逗号分隔符将它们打印出来,用于大于 999 -> 1,000 的数字。

我的问题是……嗯,实际上有两个,我怎样才能将向量传递给函数,第二,如果我想重载 << 以在幕后完成所有这些工作,这可能吗?

逗号类的全局函数:

template <class T>
string formatWithComma(T value){
    stringstream ss;
    locale commaLoc(locale(), new CommaNumPunc() );
    ss.imbue(commaLoc);
    ss << value;
    return ss.str();

在 main() 中循环以显示向量:

for (vector<unsigned int>::iterator i = integers.begin(); i != integers.end(); ++i){
    cout << formatWithComma(*i) << "  ";
}
4

2 回答 2

2

将向量传递给函数可以这样完成:

void foo(std::vector<T> &vector);
void foo(const std::vector<T> &vector);

您通常希望通过 (const) 引用来避免复制向量。

于 2013-05-05T23:19:39.147 回答
1

第一个问题:

如何将向量传递给函数

直接通过就好了。例如(假设函数模板):

template <typename T>
void processVector(const vector<T>& vec );

在 main 内部,您可以按如下方式调用它:

processVector<unsigned int> (integers); //an example instantiation

第二个问题:

如果我想重载 << 在幕后完成所有这些工作,这可能吗?

是的,当然可以。查看如何<<从这些资源中重载运算符: MSDN Overload << operatorOverload the << operator WISC

以及来自 SO 的一堆资源:如何正确重载 << 运算符

于 2013-05-05T23:25:33.703 回答