草庐IT

c++ - 我可以在 C++ 中确定数组的大小/长度而不必对其进行硬编码吗?

我基本上是在寻找某种“动态”方式将数组的大小/长度传递给函数。我试过:voidprintArray(intarrayName[]){for(inti=0;i但我意识到它只考虑它的字节大小,而不考虑数组上有多少元素。还有:voidprintArray(int*arrayName){while(*arrayName){cout这至少打印了我的所有内容,但超出了我的预期,所以它实际上并没有按照我想要的方式工作。我认为这是因为我没有确切地告诉它我需要它有多大,所以它“安全”地播放它并给我一些大尺寸并最终开始在我的数组中的最后一个元素之后打印我非常奇怪的整数。所以我终于解决了这个问题,但我相信还

c++ - 我可以在 STL 的 map 中使用 vector 吗?

我可以声明这样的map吗map>mymap;我认为它是适用的。然而,它显示不是。我试过了map*>mymap;然后就OK了这是什么规则? 最佳答案 你需要一个额外的空间:map>mymap;^seetheextraspace没有额外的空间,>>被解析为右移运算符。在C++0x中修改了规则,不再需要额外的空间。一些编译器(例如VisualC++2008及更高版本)已经不需要额外的空间。 关于c++-我可以在STL的map中使用vector吗?,我们在StackOverflow上找到一个类似

c++ - 我可以通过 for_each <algorithm> 在 C++ 中的指针 vector 上调用 `delete` 吗?

假设我有一个std::vectorobjs(出于性能原因,我的指针不是实际的Objs)。我用obj.push_back(newObj(...));填充它反复。完成后,我必须delete被推回的元素。一种方法是这样做:for(std::vector::iteratorit=objs.begin();it!=objs.end();++it){delete*it;}但是,如果我可以使用for_each我很感兴趣算法做同样的事情:#include...for_each(objs.begin(),objs.end(),delete);你怎么看? 最佳答案

c++ - 我可以在抽象类中有静态数据成员吗?

我设计了一系列相关的类,为了能够管理它们,我让它们派生自一个抽象类。这些类都需要访问一系列共享资源,我发现自己在每个类中创建了一个指针vector,所有这些都相同(它们必须相同)。似乎在基类中创建一个静态成员会让所有派生类都可以访问这个vector,这意味着我只需要构建它一次(它在构建之后也不会改变,只是查找)。我的问题是这是否可以,如果可以,我该如何构建它,而不从其中一个派生类调用“填充vector”方法?我的想法是做类似的事情classResource{};enumR{RES0,RES1};classAbstractClass{public:virtualvoidOnInit()=

c++ - 我可以在不让我的 IntelliSense 泛滥的情况下使用 Boost 库吗?

我为dynamic_bitset添加了Boost库,现在我的IntelliSense充满了大量的Boost内容。有什么办法可以阻止吗?我正在使用VS2012 最佳答案 Intellisense应该只列出当前命名空间中的函数。您很可能正在使用using指令。 关于c++-我可以在不让我的IntelliSense泛滥的情况下使用Boost库吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c++ - 为什么我可以在 C++ 中定义这个可变长度数组?

这个问题在这里已经有了答案:Arrayofsizedefinedbynotconstantvariable(3个答案)关闭8年前。给定gcc-cmain.Cgcc-lstdc++-omainmain.o而main.C是#includeintmain(){intsomany;std::cin>>somany;doubleex[somany];for(inti=0;i为什么这不会导致编译器错误?我以为C++没有VLA?执行程序工作正常。

java - 我可以通过字符串编译 C++ 源代码吗?

我知道java源代码可以使用JavaCompiler通过字符串编译。使用包含我的Java代码的长字符串,我可以测试我的代码是否可编译。来源:http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html一个例子:http://www.java2s.com/Code/Java/JDK-6/CompileaJavafilewithJavaCompiler.htm我的问题是:我有一个包含可编译C++代码的长字符串。我可以使用某种形式的Java库做类似的事情吗?还是根本不可能?谢谢编辑1:根据要求,字符串可以由用户生

c++ - 我可以为 assert() 禁用 GCC 的 noreturn 属性吗

Glibc在assert.h中使用GCC的noreturn属性:externvoid__assert_fail(...)...__attribute__((__noreturn__));这会导致GCC在进入调试器之前优化所有局部变量和this指针。优化甚至发生在-Og级别,并且在-O0级别省略了许多其他有用的优化,以至于测试变得非常缓慢。理想情况下,我只想从那里删除__noreturn__属性。我不在乎我的assert()是否运行得更快,我想看看它在何处以及为何触发。是否有GCC命令行标志或任何其他机制可用于禁用__noreturn__优化,而不禁用其他优化?可运行示例代码:#incl

c++ - 我可以依靠我的编译器来诊断 TU 中的类型不匹配吗?

通过规范搜索,似乎我的编译器不需要诊断这样的错误externinta;externfloata;我以前认为我的编译器需要对此进行诊断,但规范说(强调由我添加)Afteralladjustmentsoftypes(duringwhichtypedefs(7.1.3)arereplacedbytheirdefinitions),thetypesspecifiedbyalldeclarationsreferringtoagivenvariableorfunctionshallbeidentical,exceptthatdeclarationsforanarrayobjectcanspecify

c++ - 我可以使用聚合初始值设定项来返回 C++ 中的结构吗?

我有一个函数返回一个由两个整数组成的命名结构,如下所示:structmyStruct{inti;intj;};myStructmyFunction(intmyArg){switch(myArg){case0:return{1,2};case1:return{2,3};default:return{4,5};}}我希望能够从我的switch语句中返回适当初始化的结构。我可以通过声明一个命名结构并初始化它,然后返回命名结构来做到这一点,但是如果我能让编译器像我上面的例子那样为我创建匿名结构会更干净——它不会编译。这可以(合法地)工作吗?或者实现我的目标最简洁的方法是什么?