我想迭代一个向量并检查元素是否是向量或字符串.此外,我需要一种方法将不同的vecors传递给一个函数.像这样的东西:
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;
}
Run Code Online (Sandbox Code Playgroud)
好吧,首先我需要知道如果vec [i]是std :: vector,我怎么能正确检查
然后我需要知道如何定义函数的参数,以接受任何类型的(多维)向量
std::vector只能包含一种类型 - 即Tin std::vector<T>,可以使用该成员访问value_type.
您可能正在寻找的是模板专业化:
template<typename T>
string toCustomString(std::vector<T> vec) {
// general case
}
template<>
string toCustomString<std::string>(std::vector<std::string> vec) {
// strings
}
Run Code Online (Sandbox Code Playgroud)
(如果你想在所有向量上部分专门化它,那么你需要将它提升到一个结构)
如果你真的想在向量中存储字符串和向量,那么看看Boost.Variant和Boost.Any
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |