相关疑难解决方法(0)

你不能继承std :: vector

好吧,这真的很难承认,但我现在确实有很强的诱惑力来继承std::vector.

我需要大约10个定制的矢量算法,我希望它们直接成为矢量的成员.但我自然也希望拥有剩下std::vector的界面.好吧,作为一个守法的公民,我的第一个想法是std::vectorMyVector课堂上有一个成员.但是我必须手动重新编写所有std :: vector的接口.打字太多了.接下来,我考虑了私有继承,所以我不会using std::vector::member在公共部分写一些方法而不是重新提取方法.实际上这也很乏味.

在这里,我确实认为我可以简单地从公开继承std::vector,但在文档中提供警告,不应该多态地使用此类.我认为大多数开发人员都有足够的能力去理解这不应该以多态方式使用.

我的决定绝对没有道理吗?如果是这样,为什么?你能提供一个替代方案,其他成员实际上是成员,但不会涉及重新输入所有vector的界面吗?我对此表示怀疑,但如果可以,我会很高兴.

此外,除了一些白痴可以写类似的事实

std::vector<int>* p  = new MyVector
Run Code Online (Sandbox Code Playgroud)

使用MyVector 有任何其他现实危险吗?通过说现实,我放弃像想象一个带有指向矢量的指针的函数...

好吧,我已经陈述了我的情况.我犯罪了.现在由你来原谅我了不起:)

c++ oop inheritance stl vector

182
推荐指数
7
解决办法
5万
查看次数

嵌套向量的缺点是什么?

我仍然是C++的新手,还有很多需要学习的东西,但我最近变得非常依旧的是使用嵌套(多维)向量.所以我通常会得到这样的东西:

std::vector<std::vector<std::string> > table;
Run Code Online (Sandbox Code Playgroud)

然后,我可以轻松访问这样的元素:

std::string data = table[3][5];
Run Code Online (Sandbox Code Playgroud)

然而,最近我得到的印象是(在性能方面)更好地拥有一维向量,然后只使用"索引算术"来相应地访问元素.我认为这种性能影响对于更大或更高维度的向量来说是重要的,但我真的不知道,到目前为止还没有找到关于它的大量信息.

虽然直觉上,单个矢量比一个更高维的矢量具有更好的性能是有道理的,但老实说,我不明白其实际原因.此外,如果我只是使用单维向量,我将失去用于访问多维元素的直观语法.所以这是我的问题:

为什么多维向量效率低下?如果我只使用一维向量(表示更高维度的数据),那么访问其元素的最佳,最直观的方法是什么?

c++ vector c++11 c++14

6
推荐指数
1
解决办法
627
查看次数

标签 统计

c++ ×2

vector ×2

c++11 ×1

c++14 ×1

inheritance ×1

oop ×1

stl ×1