I am not able to call the show function using iterator of map. Is there any way to do this using iterator? #include <iostream> #include <string> #include <map> using namespace std; class A { int i; public: A(int pi):i(pi) { cout<<"A()n"; } void show() const { cout<<i<<endl; } ~A() { cout<<"~A()n"; } }; int main() { map&l
我无法使用map的迭代器调用show函数。 有没有办法使用迭代器来做到这一点? #include <iostream> #include <string> #include <map> using namespace std; class A { int i; public: A(int pi):i(pi) { cout<<"A()n"; } void show() const { cout<<i<<endl; } ~A() { cout<<"~A()n"; } }; int main() { map<char, A > mymap; A a(9) , b
This is in C++. I need to keep a count for every pair of numbers. The two numbers are of type "int". I sort the two numbers, so (n1 n2) pair is the same as (n2 n1) pair. I'm using the std::unordered_map as the container. I have been using the elegant pairing function by Matthew Szudzik, Wolfram Research, Inc.. In my implementation, the function gives me a unique number of type
这是用C ++编写的。 我需要为每一对数字保留一个计数。 这两个数字的类型是“int”。 我排序这两个数字,所以(n1 n2)对与(n2 n1)对相同。 我使用std :: unordered_map作为容器。 我一直在使用Matthew Szudzik,Wolfram Research,Inc.的优雅配对功能。在我的实现中,该函数为我提供了一个类型为“long”(我的机器上是64位)的唯一数字, INT”。 我用这个long作为unordered_map(std :: unordered_map)的关键字。 有没
The following code works as expected in GCC, but not in MSVC. #define _EXCLUDE_FIRST_ARG_(first, ...) __VA_ARGS__ #define EXCLUDE_FIRST_ARG(...) _EXCLUDE_FIRST_ARG_(__VA_ARGS__) example: EXCLUDE_FIRST_ARG(a, b, c, d, e) will evaluate in GCC(also checked in CLANG) b, c, d, e But when I using MSVC with this example, the result is empty. And when I checked first arguments in _EXCLUDE_FIRST_A
以下代码在GCC中按预期工作,但不在MSVC中。 #define _EXCLUDE_FIRST_ARG_(first, ...) __VA_ARGS__ #define EXCLUDE_FIRST_ARG(...) _EXCLUDE_FIRST_ARG_(__VA_ARGS__) 例: EXCLUDE_FIRST_ARG(a, b, c, d, e) 将在GCC中进行评估(也在CLANG中进行检查) b, c, d, e 但是,当我用这个例子使用MSVC时,结果是空的。 而当我检查first论据_EXCLUDE_FIRST_ARG_ ,我发现,参数a, b, c, d, e都绑定到first参数,并留下...什
I have encountered a problem while was using variadic templates, but the problem is not related to variadic templates and can be reproduced without them. The problem is related to same names of types in inherited and base classes. I've simplified code to the following snippet: #include <typeinfo> #include <iostream> struct A { int member; }; struct B: public A { type
我在使用可变参数模板时遇到了一个问题,但问题与可变参数模板无关,可以在没有它们的情况下进行重现。 问题与继承类和基类中的相同类型名称有关。 我已将代码简化为以下代码片段: #include <typeinfo> #include <iostream> struct A { int member; }; struct B: public A { typedef A NEXT; short member; }; struct Foo: public B { typedef B NEXT; void Check() { st
The following works with gcc 5.2 and clang 3.7 but fails with msvc 2015: #include <functional> int main() { auto const foo = [](auto&& i) { auto const bar = []{ return 100; }; return bar(); }; std::function<int(int)> fn = foo; return 0; } Is it a bug in msvc or are gcc and clang too lax? If I try this using Microsoft's official online compiler, which
以下版本适用于gcc 5.2和clang 3.7,但在msvc 2015中失败: #include <functional> int main() { auto const foo = [](auto&& i) { auto const bar = []{ return 100; }; return bar(); }; std::function<int(int)> fn = foo; return 0; } 它是msvc中的错误还是gcc和clang太松懈? 如果我使用微软官方在线编译器(这是2015年12月3日更新的版本19.00.23602.0(x86))尝试此操作,我会
I'm using GCC to compiler and I want to print the full path of the file using __FILE__ , but GCC shows only the name of the file. In MSVC is the same, but you can use an argument /FC (Full Path of Source Code File in Diagnostics) and it works. Is there any equivalent to GCC? int main(int argc, char ** argv) { std::cout << __FILE__ << std::endl; return 0; } I couldn'
我使用GCC编译器,我想用__FILE__打印文件的完整路径,但GCC只显示文件的名称。 在MSVC中是一样的,但是你可以使用参数/ FC(源代码文件的完整路径在诊断中)并且它可以工作。 有没有与GCC等价的东西? int main(int argc, char ** argv) { std::cout << __FILE__ << std::endl; return 0; } 我找不到任何等价物,但我意识到__FILE__宏通过预处理器用于打开文件的路径扩展为当前输入文件的名称。 所以
I'm finding __attribute__ ((warn_unused_result)) to be very useful as a means of encouraging developers not to ignore error codes returned by functions, but I need this to work with MSVC as well as gcc and gcc-compatible compilers such as ICC. Do the Microsoft Visual Studio C/C++ compilers have an equivalent mechanism ? (I've tried wading through MSDN without any luck so far.) It'
我发现__attribute__ ((warn_unused_result))作为一种鼓励开发人员不忽略函数返回的错误代码的手段非常有用,但我需要它来处理MSVC以及gcc和兼容gcc的编译器,如ICC。 Microsoft Visual Studio C / C ++编译器是否具有等效机制? (到目前为止,我已经尝试通过MSDN涉水,没有任何运气。) 这是_Check_return_ 。 请参阅此处查看类似注释的示例,以及这里查看功能行为。 自MSVC 2012以来,它得到了支持。 例: _Check_ret
我是C ++新手,下面的<<声明中的确切含义是什么,谢谢。 if (Val & (0x0001 << 0)) {} else {} It is a shift-left operation. If you have: a << b where a and b are integral types (char, short, long, etc.), then the bits in a are shifted left b places with zeroes filling in on the right. In other words, a is multiplied by 2^b . Example: 12 << 3 12 (decimal) = 00001100
我是C ++新手,下面的<<声明中的确切含义是什么,谢谢。 if (Val & (0x0001 << 0)) {} else {} 这是一个左移操作。 如果你有: a << b 其中a和b是整型(char,short,long等),然后a中的位向左移动b位,零位填充在右边。 换句话说, a乘以2^b 。 例: 12 << 3 12 (decimal) = 00001100 (binary) 左移3个地方: 00001100 becomes 01100000 即96( 12 * 8或12 * 2^3 ) 它意味着向左移
I came across the following code snippet if( 0 != ( x ^ 0x1 ) ) encode( x, m ); What does x ^ 0x1 mean? Is this some standard technique? The XOR operation ( x ^ 0x1 ) inverts bit 0. So the expression effectively means: if bit 0 of x is 0, or any other bit of x is 1, then the expression is true. Conversely the expression is false if x == 1. So the test is the same as: if (x != 1) a
我遇到以下代码片段 if( 0 != ( x ^ 0x1 ) ) encode( x, m ); x ^ 0x1是什么意思? 这是一些标准技术吗? 异或操作( x ^ 0x1 )反转位0.因此,表达式有效地表示:如果x的位0为0,或者x的任何其他位为1,则表达式为真。 相反,如果x == 1,则表达式为false。 所以测试与以下相同: if (x != 1) 因此(可以说)不必要地混淆。 ^是按位XOR操作 十六进制表示法中的0x1是1 x ^ 0x1将反转的最后一位x (指XOR真
I'm trying to allocate a block of memory of size size which needs to be Alignment aligned where the size may not be defined at compile time. I know routines such as _aligned_alloc , posix_memalign , _mm_alloc , etc exist but I do not want to use them as they bring down code portability. C++11 gives a routine std::align and also a class std::aligned_storage from which I can retrieve a POD t
我试图分配的大小的存储器块size需要被Alignment排列,其中尺寸可以在编译时定义。 我知道如_aligned_alloc , posix_memalign , _mm_alloc等例程,但我不想使用它们,因为它们降低了代码的可移植性。 C ++ 11提供了一个例程std::align ,还有一个std::aligned_storage类,我可以从中检索一个POD类型来分配一个将与我的需求对齐的元素。 不过,我的目标是创建一个分配器,它将分配一个size的内存块(而不仅仅是一个元素),