Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C++:是否可以创建一系列类对象(使用向量)?如果类禁用赋值运算符?

C++:是否可以创建一系列类对象(使用向量)?如果类禁用赋值运算符?
EN

Stack Overflow用户
提问于 2014-03-25 19:02:03
回答 2查看 165关注 0票数 0

我试图在一个网格中为x的每个不同的值创建一组平面,我已经创建了一个x的所有值的列表,我正在使用的程序/系统有一个平面类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List<sampledPlane> planeListX;
vector normalX(1, 0, 0);
forAll(discreteX, x)
{
    sampledPlane xPlane
    (
        "xPlane",
        mesh,
        plane
        (
            point(discreteX[x], 0, 0),
            normalX
        ),
        word::null,
        true
    );
    planeListX.append(xPlane);
}

上面的代码本质上是一个愚蠢的typeDefs数,涵盖了一个vector<sampledPlane>的声明,然后是操作planeListX.push_back(xPlane)。我的平面的构造函数工作得很好,如果planeListX.append(xPlane);行被注释掉,所有的构造函数都会很好地编译(尽管显然我的向量仍然是空的)。

当我取消对append行的注释时,我会得到一组编译器错误,其中包含如下消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/home/christian/OpenFOAM/OpenFOAM-2.2.2/src/sampling/lnInclude/sampledSurface.H:78:7: error: non-static reference member ‘const Foam::polyMesh& Foam::sampledSurface::mesh_’, can’t use default assignment operator
 class sampledSurface

我假设这样做的结果是我不能将构造的平面添加到向量中,因为这样做需要复制对象。

是否有可能以某种方式使用指针来完成此操作?还是应该深入研究库并尝试重写sampledPlane类以允许使用operator=?我非常肯定,我会发现操作符是一个没有实现的private函数,它只为阻止这类操作而设计。

顺便提一句,写:planeListX.append(sampledPlane("xPlane",mesh,plane(...),word::null, true));和避免给很多平面起相同的名字更好吗?我的理解是,在命名它们的情况下,它们将被不断地覆盖,并且在这两种情况下都是临时的(或者是临时的,或者是在for循环中被限定范围的)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-25 19:11:25

最好的解决方案是使用emplace_back。传递所有构造函数参数,而不是构造对象。这允许向量只在需要的地方创建对象一次。

back

票数 0
EN

Stack Overflow用户

发布于 2014-03-25 19:16:00

我建议您不要禁用复制分配(operator=),原因如下:

C++03

没有必要显式地考虑用户定义的操作符&因为元素必须是可复制的(23.2 container.requirements第3段)和可复制的(17.6.3.1 utility.arg.requirements)指定操作符的要求。

C++11

取决于所需的操作,但总体上保持不变。

因此,增加对象复制构造能力将丰富您可能从std中使用的算法。

说了这句话,

为了防止这种短路,C++11定义了std::vector::emplace_back,它在适当的位置构造您的对象,不执行复制或移动操作。

这些是你的选择。

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

https://stackoverflow.com/questions/22650687

复制
相关文章
访问网站提示重定向的次数过多
【客户架构】域名解析到clb的vip上,并且在clb控制台上配置了http重定向https
张晗
2021/02/27
8.8K0
【Pikachu】URL重定向(不安全的URL跳转)
URL重定向(不安全的URL跳转) http://lzctf.thecat.top/vul/urlredirect/urlredirect.php?url=i lzctf.thecat.top/vul
菜菜有点菜
2022/03/17
2K0
【Pikachu】URL重定向(不安全的URL跳转)
Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结(完整版)
一. 简单实例介绍 一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置:
洗尽了浮华
2018/09/28
31.7K0
Apache URL重定向
Apached的重写功能,即是mod_rewrite模块功能,它是apache的一个模块。它的功能非常强大,可以操作URL中的所有部分。通过改写url,给用户提供一个简介大方的url,当用户访问时可以通过mod_rewrite模块功能转换为真正的资源路径。通过mod_rewrite能实现的功能还有很多,例如隐藏真实地址、实现URL跳转、域名跳转、防盗链、限制访问资源类型等等。
星哥玩云
2022/09/15
5.5K0
kvm timer导致exit过多的解决办法
惠伟:linux time和kvm time虚拟化综述​zhuanlan.zhihu.com
惠伟
2021/06/28
1.8K0
kvm timer导致exit过多的解决办法
timer简单理解就是cpu给硬件定时器写一个超时时间,超时时间到了后,硬件定时器超时后发送中断打断cpu。在虚拟化环境中,硬件定时器不存在,是kvm模拟出来的,guest给硬件定时器写超时时间就会导致guest exit出来,kvm进行模拟,kvm模拟时可以利用软件定时器也可以利用真正的硬件定时器,假如利用了真正的硬件定时器,kvm写完硬件定时器后重新enter guest,硬件定时器超时后发送中断打断cpu,cpu收到中断后从guest中exit出来,处理中断,然后把中断注入guest,模拟虚拟定时器的中断。这样guest就至少有两次exit。
惠伟
2022/04/28
8510
kvm timer导致exit过多的解决办法
URL重定向漏洞易受攻击的参数
/{payload} ?next={payload} ?url={payload} ?target={payload} ?rurl={payload} ?dest={payload} ?d
Khan安全团队
2022/05/17
1.4K0
URL重定向漏洞易受攻击的参数
让你的iPhone应用的URL更加友好易记
在你的应用程序上线后,经常要做对外推广的工作,经常会把你的应用程序的url贴在各处。 默认的iTunes链接的样子如下:
EltonZheng
2021/01/26
3580
http response code 301 和 302,你懂吗
一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved)。 302 redirect: 302 代表暂时性转移(Temporarily Moved )。 这是很官方的说法,那么它们的区别到底是什么呢?
后端技术探索
2018/08/09
2.7K0
http response code 301 和 302,你懂吗
一.官方说法 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved)。 302 redirect: 302 代表暂时性转移(Temporarily Moved )。 这是很官方的说法,那么它们的区别到底是什么呢?
后端技术探索
2018/08/09
1.1K0
go :gin URL重定向
本文介绍gin 框架下,URL重定向问题http重定向r.GET("/test", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, "http://www.qq.com/")})完整测试代码package mainimport ( "net/http" "github.com/gin-gonic/gin")func main() { r := gin.Default() // Serves unico
IT工作者
2022/07/22
1.8K0
漏洞挖掘 - Url重定向
URL重定向的定义是指把一个目录或文件的访问请求转发到另一个目录或文件上,当用户发出相应的访问请求的时候,网页能跳转到指定的位置。
Khan安全团队
2021/08/26
4.3K0
漏洞挖掘 - Url重定向
Apache中 RewriteRule 规则参数介绍
大家好,又见面了,我是你们的朋友全栈君。Apache中 RewriteRule 规则参数介绍
全栈程序员站长
2022/08/27
12K0
使用FastAPI进行URL重定向
第一种方法,是直接返回一个RedirectResponse对象,默认的HTTP码是307:
SeanCheney
2023/01/10
5.6K0
使用FastAPI进行URL重定向
centos7-httpd服务器
Apache HTTP Server是Apache软件基金会的一个开源的网页服务器,可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是目前最流行的Web服务器端软件之一。
yuezhimi
2020/09/30
9040
WordPress登录后台重定向次数过多的解决办法
wordpress是目前全球最流行的cms内容管理系统之一。而目前chrome谷歌浏览器等主流浏览器都已经强制推广https链接,如果站点没有配置https访问,那么谷歌浏览器会在地址栏标注“不安全”。但是,如果你新安装的一个wordpress站点配置https后,再登录wordpress后台,却无法访问后台了。页面提示:将您重定向的次数过多,怎么办呢?
皇上得了花柳病
2020/07/08
7.3K0
EasyGBS平台对页面过多导致加载困难的问题优化
EasyGBS国标视频云服务平台不仅支持无缝、完整接入内网或者公网的国标设备,在输出上,实现全平台、全终端输出。平台可将GB/T28181设备/平台推送的PS流转成ES流,并提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务,实现Web浏览器、手机浏览器、微信端、PC客户端等各终端无插件播放。
TSINGSEE青犀视频
2022/07/13
2770
Apache URL重定向配置专题
Rewrite url重定向就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等。
江中散人_Jun
2022/03/08
1.9K0
python 重定向获取真实url
楼主在做公司项目的时候遇到url重定向的问题,因此上网简单查找,作出如下结果 由于使用的是语言是python所以以下是python的简单解决方案 http_headers = { 'Accept': '*/*','Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safar
py3study
2020/01/07
2.4K0
点击加载更多

相似问题

三元组中的三元组

23

连接三元组中的多个表

01

将元组元素组合到列表中

12

将OpenIE三元组转换为N-三元组(NT)

10

生日登记表三元组

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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