腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
为什么
std
::
swap
不是
类
模板
?
c++
如果我有一个
类
模板
,并且我想在
std
命名空间中添加它自己的
swap
(): template<typename T> void
swap
(Widget &) {}}; template<typename T> void
swap
<Widget<T> >(Widget<T> &a, Widget<T>
浏览 24
提问于2021-11-19
得票数 1
2
回答
为什么
两阶段查找不能选择重载版本的“交换”?
c++
、
templates
、
c++11
、
swap
、
argument-dependent-lookup
答案接着指出,specializing
swap
in namespace
std
(而
不是
重载)产生了不同的结果(在专门化的情况下需要的结果)。但是,答案是另一种情况:专门化交换用户定义的
模板
类
--在这种情况下,同样没有达到预期的结果。 为用户定义的非
模板
类
(如链接答案的第一段代码段)重载用户定义的非
模板
浏览 2
提问于2014-01-27
得票数 9
回答已采纳
3
回答
C++,重载
std
::交换,编译器错误,VS 2010
c++
、
visual-studio-2010
、
overloading
、
swap
我想在我的
模板
类
中重载
std
::
swap
。<T> &p1, Point2D <T> &p2 ) { p1.
swap
( p2 ); } { inline void::
swap
( Point2D <T> &p ) using (
std
::
swap
); <em
浏览 0
提问于2011-01-03
得票数 4
1
回答
使用声明隐藏名称
c++
、
swap
、
using
、
argument-dependent-lookup
、
name-lookup
< "
swap
(H &t1, H &t2)" <<
std
::endl;{
swap
(*this, rhs在函数void H::
swap
(H &rhs)中,我使用一个使用声明来使名称
std
::
swap
可见。如果没有使用声明,则无法编译代码,因为
类
H中
浏览 3
提问于2016-03-09
得票数 3
回答已采纳
6
回答
重载用户定义类型的全局交换
c++
、
stl
、
swap
、
standards
C++标准禁止在名称空间
std
中声明类型或定义任何内容,但它允许您为用户定义的类型专门化标准STL
模板
。通常,当我想为自己的自定义
模板
化类型指定
std
::
swap
时,我只需这样做:{ void
swap
(MyType<T>& t1, MyType<T>& t2) t1.
swap
(t2);} ...a
浏览 1
提问于2010-02-09
得票数 14
回答已采纳
3
回答
使用宏来专门化
std
::
swap
c++
、
macros
、
coding-style
//
swap
_specialize.hpp#define
STD
_
SWAP
_SPECIALIZE(CLASSNAME ) \ template<> inline\ void
swap</em
浏览 0
提问于2009-07-17
得票数 2
回答已采纳
2
回答
为什么
std
::hash
不是
一个重载函数?
c++11
、
stdhash
我猜被定义为
模板
结构是为了避免在重载函数解析期间进行隐式类型转换。这样说对吗?我是说,我更喜欢写size_t hash =
std
::hash(s);
std
::string s; size_t hash =
std
::hash<
std
::
浏览 4
提问于2013-07-08
得票数 10
回答已采纳
4
回答
为另一个
模板
类型声明一个
模板
的特殊化的正确方法是什么?
c++
、
templates
模板
函数专门化的通常定义如下: [...] template<> [...]} // namespace
std
template <size_t Bits> class fixed
浏览 0
提问于2010-04-28
得票数 3
回答已采纳
1
回答
带有函数签名的Const关键字
c++
、
function
、
stl
、
constants
以下是我的简单代码:class vectorpublic:{ v1.
s
浏览 6
提问于2016-04-23
得票数 3
回答已采纳
5
回答
应该在
std
名称空间中重载交换吗?
c++
、
stl
我今天读到了一些有趣的东西,其中说对用户提供的类型(作为
模板
参数提供的)调用交换的“标准”方法是.
swap
(something, soemthingelse); 这样做的原因是使用依赖于参数的查找,要么在用户名称空间中使用
swap
函数,要么在
std
命名空间中使用
swap
。当我为我的一个
类
重载
std
::
swap
时,我实际上一直在
std
命名空间中定义它.namespa
浏览 5
提问于2013-01-18
得票数 21
回答已采纳
1
回答
如何得到广义交换函数?
c++
、
templates
、
swap
(T &l, T &r) try {
std
::
swap
(l, r); }} {
std
::
swap
(a,b);
std
::cout << "after: " << a << ' ' &l
浏览 4
提问于2022-04-23
得票数 1
回答已采纳
2
回答
如何正确地专门化
std
::交换我的类型?
c++
、
std
、
swap
、
template-specialization
在我成功地重载了
类
类型的
std
::
swap
之后,现在我希望对它进行专门化,而
不是
重载它,因为标准允许向命名空间
std
添加
模板
专门化。void
std
::
swap
<VecFoo>(VecFoo&, VecFoo&);void
std
::
swap
<VecFo>(VecFoo& lhs, VecFoo&rhs){
浏览 0
提问于2021-04-05
得票数 1
2
回答
为什么
这个程序要交换这些值?
c++
、
swap
、
argument-dependent-lookup
、
name-lookup
我有以下代码:#include <iostream>#include <conio.h>#include <iomanip> { a=b;}tmain(int argc, _TCHAR* argv[]) int x
浏览 2
提问于2011-05-07
得票数 10
回答已采纳
1
回答
我想在我的
类
中使用
模板
交换实现一个交换方法。
c++
我有一个只有一个成员的
类
,它是一个向量。myClass{ vector<double> vector_member; method1(); ...我想在这个
类
中用
模板
交换实现一个交换方法我想要达到这样的目标:
std
::
swap
(this.vector_member, p.vector_m
浏览 4
提问于2020-12-01
得票数 0
回答已采纳
2
回答
使用带有复制和交换的
模板
类
来解决外部问题
c++
、
templates
、
unresolved-external
、
copy-and-swap
在使用
模板
类
时,我得到了一个链接器错误,我尝试实现这里建议的复制和交换成语: template< class T >{
swap
( first.member1, second.member1,但
浏览 4
提问于2011-09-07
得票数 2
回答已采纳
3
回答
如何为我的
类
提供交换函数?
c++
、
stl
、
swap
在STL算法中启用我的
swap
的正确方法是什么?2)同一命名空间中的自由
swap
。3)
std
::
swap
的部分专业化。谢谢。 编辑:看起来我没有清楚地表达我的问题。基本上,我有一个
模板
类
,我需要STL算法来使用我为该类编写的(高效)交换方法。
浏览 1
提问于2011-06-17
得票数 93
回答已采纳
2
回答
关于函数调用解析的混淆
c++
、
language-lawyer
、
function-calls
、
overload-resolution
、
argument-dependent-lookup
考虑一下守则: template <typename T> using namespace
std
;
swap
(a, b);}1)如果
std
::
swap
T重载了
std
::
swap
(例如,标准容器类型) 2) ns::
swap
,但是当ADL出
浏览 4
提问于2015-05-04
得票数 7
回答已采纳
4
回答
如何重载
std
::
swap
()
c++
、
performance
、
optimization
、
stl
、
c++-faq
许多标准容器(如
std
::list和
std
::vector)在排序甚至赋值过程中都会使用
std
::
swap
()。 但是
swap
()的标准实现是非常通用的,并且对于自定义类型来说效率相当低。因此,可以通过使用特定于自定义类型的实现重载
std
::
swap
()来获得效率。但是,如何实现它才能被
std
容器使用呢?
浏览 8
提问于2008-08-14
得票数 122
回答已采纳
5
回答
使交换更快、更容易使用和异常安全。
c++
、
swap
、
move-semantics
、
c++11
请注意,这不适用于
类
模板
,因为您不能部分地专门化函数
模板
,而且
std
命名空间中的重载名称是非法的。解决方案是在自己的名称空间中编写一个
模板
函数,并依靠依赖于参数的查找来找到它。这在很大程度上取决于客户端是否遵循"using
std
::
swap
成语“,而
不是
直接调用
std
::
swap
。非常易碎。在C++0x中,如果Foo具有用户定义的移动构造函数和移动赋值操作符,则提供自定义
swap
方法和<
浏览 3
提问于2011-02-02
得票数 14
回答已采纳
3
回答
将值传递给C++中的指针参数
c++
、
pointers
、
parameter-passing
在下面的代码中,
为什么
交换函数以两种方式工作,即将值传递为交换(x,y)和交换(&x,&y)。int main(){ cin >> x >> y; cout << "\nSwapped values are, x: " << x << " & y: &qu
浏览 3
提问于2016-09-28
得票数 4
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
C+11并发编程:多线程std:thread
Rust中的Pin详解
解读C++即将迎来的重大更新:C++20的四大新特性
【crossbeam系列】1有锁并发、无锁并发和crossbeam极简介
C+11使用using定义别名(替代typedef)
热门
标签
更多标签
云服务器
即时通信 IM
ICP备案
对象存储
实时音视频
活动推荐
运营活动
广告
关闭
领券