首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++,对象向量

C++,对象向量
EN

Stack Overflow用户
提问于 2010-03-09 18:56:13
回答 4查看 385关注 0票数 0

在c++中,使用对象向量是一个好主意吗?如果不是,这个c++代码有什么问题?

代码语言:javascript
复制
#include <vector>

using namespace std;

class A {};

int main() {

        vector<A*> v ( new A);
        return 0;
}

来自g++:

13:错误:从A*' to无符号int‘进行的无效转换

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-09 18:58:29

std的构造函数::向量采用初始长度,而不是元素。

这意味着你通常会:

代码语言:javascript
复制
vector<A*> v(1); // Initialize to length 1
v.push_back( new A() ); // Add your element...

您将得到编译器错误,因为在您的系统上,size_type被定义为unsigned int。它试图使用该构造函数,但失败了,因为您要向它传递指向A的指针。

票数 11
EN

Stack Overflow用户

发布于 2010-03-09 18:59:31

在使用不知道的东西之前,您需要阅读文档

下面是std::vector类的不同构造函数:

代码语言:javascript
复制
explicit vector ( const Allocator& = Allocator() );
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
template <class InputIterator>
         vector ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
vector ( const vector<T,Allocator>& x );
票数 4
EN

Stack Overflow用户

发布于 2010-03-09 19:00:37

向量没有一个构造函数来存储一个项。

用给定的值生成一个项目的向量:

代码语言:javascript
复制
vector<A*> v ( 1, new A);

至于拥有指向动态分配对象的指针向量是否是一个好主意-不。你必须手动管理那个内存。

按值存储对象要好得多,或者如果必须的话--使用智能指针来自动管理内存(例如std::tr1::shared_ptr)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2411704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档