首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >unique_ptr的循环向量的C++11

unique_ptr的循环向量的C++11
EN

Stack Overflow用户
提问于 2015-07-01 20:44:14
回答 1查看 1.8K关注 0票数 0

无法正确地循环遍历unique_ptrs向量到我自己的自定义对象。我在下面提供了伪代码,这些代码并没有完全充实,但重点放在for循环上。我想使用C++11 "for“循环,并迭代向量--或者据我所知,如果你自己的迭代器更好呢?当我有不同的课程时,我不知道该怎么做。如果我将向量保存在一个管理器类中,那么我应该在哪里定义迭代器方法?在对象类中,还是在管理器类中?我还希望确保我的数据保持常量,这样实际值就不能被更改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Class for our data
Class GeoSourceFile
{
    // some data, doesn't matter
    double m_dNumber;
    int    m_nMyInt;
}
// singleton manager class
Class GsfManager
{
  public:
    // Gets pointer to the vector of pointers for the GeoSourceFile objects
    const std::vector<std::unique_ptr<GeoSourceFile>>* GetFiles( );
  private:
    // Vector of smart pointers to GeoSourceFile objects
    std::vector<std::unique_ptr<GeoSourceFile>> m_vGeoSourceFiles;  
}
void App::OnDrawEvent
{
    GsfManager* pGsfMgr = GsfManager::Instance();
    for(auto const& gsf : *pGsfMgr->GetFiles() )
    {
         oglObj->DrawGeoSourceFile( file );
    }
}

void OglClass::DrawGeoSourceFile( std::unique_ptr<GeoSourceFile> file )
{
    //...
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-02 00:27:31

我自己找到了问题的答案。

这里要记住的重要一点是,您不能创建unique_ptr的副本...这包括将指针传递给其他函数。如果将unique_ptr传递给另一个函数,则必须在接收函数中使用&字符。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void OglClass::DrawGeoSourceFile( const std::unique_ptr<GeoSourceFile> file )
{
    // fails to compile, you're getting a copy of the pointer, which is not allowed
}

void OglClass::DrawGeoSourceFile( const std::unique_ptr<GeoSourceFile>& file );
{
    // successfully compiles, you're using the original pointer
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31171317

复制
相关文章
「Python」矩阵、向量的循环遍历
请注意,本文编写于 325 天前,最后修改于 325 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.4K0
探究C++11智能指针之std::unique_ptr
谈起C++,它被公认为最难学的编程语言之一,不仅语法知识点广泛,细节内容之多,学习难度和学习周期也长,导致好多新入行的开发者对C++“敬而远之”,甚至“从入门到放弃”。自C++11开始,好多C++程序员慢慢的感受到了C++的魅力所在,似乎难度也越来越小。
音视频牛哥
2022/06/01
2.4K0
探究C++11智能指针之std::unique_ptr
C++11哈希集合set与向量vector的互转
以下总结一下assign()函数的两种用法: 【语法1】:容器.assign(iterator1, iterator2);
SL_World
2021/09/18
2.3K0
C++11:unique_ptr 自己定义类似make_shared的make_unique模板函数
C++11中的智能指针分为共享型的shared_ptr和独占型的unique_ptr,C++11提供了make_shared函数来创建shared_ptr指针,使用起来更方便,有了make_shared函数,就可以完全摆脱new操作了,可以写出完全没有new/delete的程序。 但是unique_ptr却不同,unique_ptr不像shared_ptr可以通过make_shared方法来创建智能指针,C++11目前还没有提供make_unique函数,在C++14中才会提供make_shared方法类似的make_unique来创建unique_ptr.
10km
2022/05/07
1.2K0
C++11:unique_ptr 自己定义类似make_shared的make_unique模板函数
For循环与向量化(Vectorization)
感谢水友们积极的提问,大猫和村长在此再次表示衷心的感谢。通过对水友们问题的汇总,我们发现大多数水友存在一些R语言的应用误区,在此出一期关于该问题的解读。
用户7652506
2022/04/14
1.9K0
c++11新特性之智能指针
shared_ptr使用了引用计数,每一个shared_ptr的拷贝都指向相同的内存,每次拷贝都会触发引用计数+1,每次生命周期结束析构的时候引用计数-1,在最后一个shared_ptr析构的时候,内存才会释放。
C语言与CPP编程
2020/12/02
8320
提升面试成功率:深入理解 C++ 11 新特性
C++11引入了auto关键字,可以让编译器自动推导变量的类型。这样可以减少代码中的重复代码,提高代码的可读性和可维护性。例如:
小万哥
2023/03/20
1.2K0
提升面试成功率:深入理解 C++ 11 新特性
如何用C++11实现观察者模式
观察者模式是一种设计模式,定义了对象之间的一对多关系。当一个对象状态发生改变时,它的依赖者都会收到通知并自动更新。在C++11中,可以通过以下方式实现观察者模式:
音视频牛哥
2023/07/08
2120
初探C++11智能指针
在远古时代,C++发明了指针这把双刃剑,既可以让程序员精确地控制堆上每一块内存,也让程序更容易发生crash,大大增加了使用指针的技术门槛。因此,从C++98开始便推出了auto_ptr,对裸指针进行封装,让程序员无需手动释放指针指向的内存区域,在auto_ptr生命周期结束时自动释放,然而,由于auto_ptr在转移指针所有权后会产生野指针,导致程序运行时crash,如下面示例代码所示:
forrestlin
2019/07/23
1.3K0
智能指针-使用、避坑和实现
在上篇文章(内存泄漏-原因、避免以及定位)中,我们提到了用智能指针来避免内存泄漏,今天借助本文,从实践、避坑和实现原理三个角度分析下C++中的智能指针。
高性能架构探索
2022/08/25
9750
智能指针-使用、避坑和实现
窥见C++11智能指针
导语: C++指针的内存管理相信是大部分C++入门程序员的梦魇,受到Boost的启发,C++11标准推出了智能指针,让我们从指针的内存管理中释放出来,几乎消灭所有new和delete。既然智能指针如此强大,今天我们来一窥智能指针的原理以及在多线程操作中需要注意的细节。 智能指针的由来 在远古时代,C++使用了指针这把双刃剑,既可以让程序员精确地控制堆上每一块内存,也让程序更容易发生crash,大大增加了使用指针的技术门槛。因此,从C++98开始便推出了auto_ptr,对裸指针进行封装,让程序员无需手
腾讯技术工程官方号
2019/08/13
1.4K0
窥见C++11智能指针
向量函数的内积_向量的内积运算
这是我的第一篇原创博客,谈谈自己在读研中的一些小思考,希望能给大家的学习带来一点启发。
全栈程序员站长
2022/09/27
1.2K0
向量函数的内积_向量的内积运算
C++智能指针学习(一)
大家好,今天继续给大家分享一篇cpp文章,最近我也在复习关于STL的基础知识,后期会分享这块的知识,今天分享这篇文章后,继续总结一下音视频里面的同步知识点,这篇文章明天早上发布出来。
用户6280468
2022/03/21
7700
C++智能指针学习(一)
C++基础 智能指针
智能指针和普通指针的区别在于智能指针实际上是对普通指针加了一层封装机制,这样的一层封装机制的目的是为了使得智能指针可以方便的管理一个对象的生命期,实现内存的自我回收。
xxpcb
2020/08/04
6250
C++智能指针
C++智能指针 零、前言 一、为什么需要智能指针 二、内存泄漏 三、智能指针 1、RAII 2、智能指针的原理 3、std::auto_ptr 4、std::unique_ptr 5、std::shared_ptr 6、std::weak_ptr 7、删除器 8、C++11和boost中智能指针的关系 零、前言 本章主要讲解学习C++中智能指针的概念及使用 一、为什么需要智能指针 示例: double Division(int a, int b) { // 当b == 0时抛出异常 if (b =
用户9645905
2022/11/15
6200
C++智能指针
C++11:模板实现opencl向量类型的简单运算符重载及length,distance函数
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51121642
10km
2019/05/25
1.7K0
C++11智能指针
C成也指针,败也指针。确实,指针给程序员提供了很多便利和灵活性,但是不当的指针使用也会造成很多问题。 Java和C#避免了指针(虽然C#中也能使用指针,但是估计很少有人这样做),其垃圾回收机制,给程序员减轻很多管理内存的负担。
卡尔曼和玻尔兹曼谁曼
2019/01/22
8920
C++11智能指针
简单理解向量对向量的求导
人生的跑道上,有人用心欣赏风景,有人努力让自己成为风景。人人都希望追求到美好,其实美好就是无止境的追求。
触摸壹缕阳光
2020/05/22
3.1K0
C++最佳实践 | 6. 性能
注意: 前置声明会阻碍内联和优化,建议在发布版本中使用链接时优化或链接时代码生成。
C语言与CPP编程
2022/10/31
8220
C++智能指针
为了更容易(同时也更安全的)地使用动态内存,新的标准库提供了两种智能指针,来管理动态对象。智能指针的行为类似于常规指针,重要的区别是它负责自动释放所指向的对象。
半生瓜的blog
2023/05/13
4640
C++智能指针

相似问题

C++11复制std::成员std::unique_ptr的向量

38

c++11成员函数从unique_ptr向量返回原始指针的向量

56

使用vector<unique_ptr<mytype>> ()循环遍历C++11

13

使用没有unique_ptr的C++11

14

为什么unique_ptr向量中的循环要求默认删除?

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文