map<T,Z> m= ...;
vector<T> v;
v.reserve(m.size);
for(map<T,Z>::iterator it=m.begin();it!=m.end();++it)
{
v.push_back(it->first);
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的1行版本使用一些STL功能?
编辑:不使用c ++ 11!
我对继承方法的虚拟属性感到困惑.
假设我们有4个类:A类,B类,C类和D类.这些类是通过这种方式继承的:A - > B - > C - > D,其中A是基类.
到目前为止,我确信这一点:在基类(类A)中使用virtual开始类方法声明,使得方法对于从基类派生的所有类都是虚拟的,包括派生类的派生类.(B和C类方法确定为虚拟).
混乱就在这里.如果在基类A中没有任何虚拟成员,该怎么办?相反,我们可以说,B类声明了一种虚拟方法.我假设,此更改将使属于所有属于继承链(C和D类)的派生类的函数为虚拟.从逻辑上讲,B代表C和D,是一种"基类",对吧?还是我错了?
在阅读这里的一些文档时,我遇到了这个:
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
Run Code Online (Sandbox Code Playgroud)
我不知道这是如何工作的.我读了C中的按位运算符,但我不明白你如何在一个int中包含三个(或更多!)常量,以后能够以某种方式从int中提取它们?进一步深入了解文档,我也发现了这个,这可能是相关的:
typedef enum {
kCFCalendarUnitEra = (1 << 1),
kCFCalendarUnitYear = (1 << 2),
kCFCalendarUnitMonth = (1 << 3),
kCFCalendarUnitDay = (1 << 4),
kCFCalendarUnitHour = (1 << 5),
kCFCalendarUnitMinute = (1 << 6),
kCFCalendarUnitSecond = (1 << 7),
kCFCalendarUnitWeek = (1 << 8),
kCFCalendarUnitWeekday = (1 << 9),
kCFCalendarUnitWeekdayOrdinal = (1 << 10),
} CFCalendarUnit;
Run Code Online (Sandbox Code Playgroud)
(1 << 3)
语句/变量如何工作?我很抱歉,如果这是微不足道的,但是有人可以通过解释或者发布一个好的解释链接来启发我吗?
我没有glBindAttribLocation
在OpenGL ES 2.0中使用函数
有人可以给我完整的背景吗?是这样的吗?
g_pLightDir = g_pEffect10->GetVariableByName( "g_LightDir" )->AsVector();
Run Code Online (Sandbox Code Playgroud)
在DirectX 10?在各种网站上在线阅读,但无法使用此功能.需要帮助..
什么是STL列表,向量和集合的基础数据结构?
我的解决方案
对?
我想知道mutable如何影响容器(map,vector,list,...).另外,我还要记住什么?
当vector需要更多内存时,它会在某处重新分配内存,我不知道它在哪里!然后指针变得无效,对此有什么好的解释吗?
我的意思是他们去哪里,我的容器发生了什么?(没有链接列表)
可以std::vector<char>
这样对待一个数组:
std::vector<char> v(10);
strncpy(&v[0], "hello", 9); // <-- Is this safe?
Run Code Online (Sandbox Code Playgroud) 什么是检查的具体C++中的11个功能中存在的一个好方法标准库.
对于编译器功能,我只是检查(IMHO)主要编译器的编译器版本(目前VC++,gcc,clang,也许是英特尔)虽然这不是最好和最灵活的方法,但我不知道还有更好的东西,除了有非常好的宏的铿锵声__has_feature
.
但是对于库特征来说更糟糕的是,这些特征并没有严格地与编译器耦合.目前我想使用相同的方法来检查VC++的编译器版本(假设它使用自己的库,它很容易).对于clang,我至少可以__has_include
用于大规模的基于头的查询.除此之外我想__GLIBCXX__
如果定义检查的值可能是一个好主意,但是我再次找不到任何特定libstdc ++版本引入哪些功能的信息,除了当前版本支持的功能.
这些方法应该保留给预处理器检查等,因为我想在没有任何复杂的配置过程的情况下在只有头的库中使用它而不使用任何第三方库(是的,boost是第三方).
那么在这些(非常狭窄的)条件下检查特定C++ 11库特征的可能性是什么呢?甚至可能在声明的特定功能或类型的规模上?
如果检查编译器或库版本仍然是最好的方法,我在哪里可以找到有关特定版本的libstdc ++支持的特定C++ 11特性的详细信息(也许还有其他重要的特性,libc ++)?
FWIW目前我对<cstdint>
C++ 11的<cmath>
功能感兴趣std::hash
,但这可能会改变,对于一般方法可能并不重要.
如果我有以下内容
template<class T> print_all(vector<T> const & collection);
Run Code Online (Sandbox Code Playgroud)
在声明的背景下你会称之为T?即你会说T是矢量const和集合的参数吗?即类型关闭时它满足向量?
热衷于找出实际术语是什么.