Generic vector of vectors in C++(C++中向量的通用向量)
问题描述
在 C++ 中是否有一种好方法来实现(或伪造)通用向量向量的类型?
Is there a good way in C++ to implement (or fake) a type for a generic vector of vectors?
忽略向量向量何时是一个好主意的问题(除非有一些等效的东西总是更好).假设它确实准确地对问题建模,而矩阵不能准确地对问题建模.还假设将这些东西作为参数的模板化函数确实需要操作结构(例如调用 push_back),因此它们不能只采用支持 [][]
的泛型类型.
Ignore the issue of when a vector of vectors is a good idea (unless there's something equivalent which is always better). Assume that it does accurately model the problem, and that a matrix does not accurately model the problem. Assume also that templated functions taking these things as parameters do need to manipulate the structure (e.g. calling push_back), so they can't just take a generic type supporting [][]
.
我想做的是:
template<typename T>
typedef vector< vector<T> > vecvec;
vecvec<int> intSequences;
vecvec<string> stringSequences;
当然这是不可能的,因为 typedef 不能被模板化.
but of course that's not possible, since typedef can't be templated.
#define vecvec(T) vector< vector<T> >
很接近,并且可以避免在对 vecvecs 进行操作的每个模板化函数中重复类型,但不会受到大多数 C++ 程序员的欢迎.
is close, and would save duplicating the type across every templated function which operates on vecvecs, but would not be popular with most C++ programmers.
推荐答案
您想要模板类型定义.目前的 C++ 尚不支持 .解决方法是做
You want to have template-typedefs. That is not yet supported in the current C++. A workaround is to do
template<typename T>
struct vecvec {
typedef std::vector< std::vector<T> > type;
};
int main() {
vecvec<int>::type intSequences;
vecvec<std::string>::type stringSequences;
}
在下一个 C++(由于 2010 年称为 c++0x、c++1x)中,这将是可能的:
In the next C++ (called c++0x, c++1x due to 2010), this would be possible:
template<typename T>
using vecvec = std::vector< std::vector<T> >;
这篇关于C++中向量的通用向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:C++中向量的通用向量
基础教程推荐
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01