【发布时间】:2012-10-18 23:26:12
【问题描述】:
我想遍历一个向量并检查元素是向量还是字符串。我还需要一种将不同的向量传递给函数的方法。 像这样的:
using namespace std;
string toCustomString(<some vector> vec) {
string ret = "";
for(size_t i = 0; i < vec.length(); ++i)
if (vec[i] == %vector%)
ret += toCustomString(vec[i]);
else //if type of vec[i] is string
ret += "foo"+vec[i]+"bar";
}
return ret;
}
嗯,首先我需要知道如何正确检查 vec[i] 是否为 std::vector
然后我需要知道如何定义函数的参数以接受任何类型的(多维)向量
【问题讨论】:
-
查找运行时类型标识 (RTTI) 和
typeid关键字 -
C++
std::vector只能包含一种静态类型的项目:vector<string>的每个元素都是字符串,vector<vector<T> >的每个元素都是vector<T>。 -
这是你在动态类型语言中会做的事情。在像 C++ 这样具有静态类型的语言中,这将非常复杂。发布您实际尝试完成的工作,有人可能会提出一个可以使用静态类型语言的解决方案。