我正在玩弄溪流一点点,无法理解下面的内容.
这里我们有一个基本的ostream ptr,设置为不同的输出流,无论是cout,cerr还是a file.
// ostream ptr
std::ostream* outstream;
// set output ostream
void setOutput(std::ostream & os)
{
outstream = &os;
}
// write message to ostream
void writeData(const std::string & msg)
{
*outstream << msg << '\n';
}
int main (int argc, char * const argv[])
{
// init to std out
setOutput(std::cout);
writeData("message to cout");
setOutput(std::cerr);
writeData("message to cerr");
std::ofstream fileout("test.txt", std::ofstream::out | std::ofstream::app);
setOutput(fileout);
writeData("message to file");
//fileout.close();
setOutput(std::cout);
writeData("message2 to cout"); …Run Code Online (Sandbox Code Playgroud) 我有一个Matrix类,它必须有一个接受未初始化列表的构造函数.contstructor必须获取值并将它们放在2D矢量,矩阵中.
这是我的2D矢量.
vector<vector<double>> d_matrix;
Run Code Online (Sandbox Code Playgroud)
这是我的构造函数.
Matrix::Matrix(initializer_list<initializer_list<int>> list)
{
d_row = list.size();
d_col = (*list.begin()).size();
initMatrix();
for (size_t r = 0; r < d_row; ++r)
{
for (size_t c = 0; c < d_col; ++c)
{
/* I need to do something here */
//d_matrix[r][c] = list.begin() + r) + c);
//cout << (*list.begin()).;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的init Matrix函数,以初始值开始.
void Matrix::initMatrix()
{
d_matrix.resize(d_col, vector<double>(d_row, 0));
}
Run Code Online (Sandbox Code Playgroud)
这就是我调用构造函数的方式.
Matrix m({ {1, 2, 3},
{3, 4, 2} }
);
Run Code Online (Sandbox Code Playgroud)
我设法获得列表的维度(d_row和d_col),但是我仍然试图从列表中提取值,尝试使用插入以及迭代器的开始和结束.未初始化的列表类似乎只有两个迭代器方法和一个size方法.我正在使用命名空间std btw.
问题是,我如何从未初始化的列表中获取值并将它们存储到我称为d_matrix的2D向量中.
我正在寻找一种创建命名服务的方法.基本上我需要一个接受任何东西作为参数的函数,并返回给定参数的名称.这可以是任何东西,类,功能,变量等.
std::string name(T t)
{
if t is a function
return __func__ of t
if t is a variable
return name of variable.
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?