C++中向量的通用向量

2024-08-13C/C++开发问题
6

本文介绍了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++中向量的通用向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

无法访问 C++ std::set 中对象的非常量成员函数
Unable to access non-const member functions of objects in C++ std::set(无法访问 C++ std::set 中对象的非常量成员函数)...
2024-08-14 C/C++开发问题
17

从 lambda 构造 std::function 参数
Constructing std::function argument from lambda(从 lambda 构造 std::function 参数)...
2024-08-14 C/C++开发问题
25

STL BigInt 类实现
STL BigInt class implementation(STL BigInt 类实现)...
2024-08-14 C/C++开发问题
3

使用 std::atomic 和 std::condition_variable 同步不可靠
Sync is unreliable using std::atomic and std::condition_variable(使用 std::atomic 和 std::condition_variable 同步不可靠)...
2024-08-14 C/C++开发问题
17

在 STL 中将列表元素移动到末尾
Move list element to the end in STL(在 STL 中将列表元素移动到末尾)...
2024-08-14 C/C++开发问题
9

为什么禁止对存储在 STL 容器中的类重载 operator&amp;()?
Why is overloading operatoramp;() prohibited for classes stored in STL containers?(为什么禁止对存储在 STL 容器中的类重载 operatoramp;()?)...
2024-08-14 C/C++开发问题
6