Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

12
VS 2015命令提示中不再存在rc.exe
我刚刚安装了Windows 10 Creators Update(版本10.0.15063)。 我安装了多个版本的Visual Studio(2012、2013、2015和2017)。我仅在几周前安装了VS 2017。 问题 在“ VS2015 x64本机命令提示符”中运行时,CMake(版本3.8.1)不再找到C / C ++编译器(在VS 2017命令提示符中运行时,它确实可以正常工作)。 再生产 内容CMakeLists.txt: project (test) add_executable (test test.cpp) (的内容test.cpp无关紧要。) 在VS2015 x64本机命令提示符中进行CMake调用: > mkdir build > cd build > cmake -G "Visual Studio 14 2015 Win64" .. CMake输出: -- The C compiler identification is unknown -- The …


10
矢量擦除迭代器
我有这个代码: int main() { vector<int> res; res.push_back(1); vector<int>::iterator it = res.begin(); for( ; it != res.end(); it++) { it = res.erase(it); //if(it == res.end()) // return 0; } } “一个随机访问迭代器,指向在函数调用删除的最后一个元素之后的元素的新位置,如果操作删除了序列中的最后一个元素,则该向量为向量结束。” 此代码崩溃,但是如果我使用该if(it == res.end())部分然后返回,则可以正常工作。怎么来的?for循环是否缓存,res.end()以便不等于运算符失败?
75 c++  vector  iterator 

10
我如何“突破” if语句?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,因此不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 9年前关闭。 我有一个if语句,我想“突破”。我知道中断只是为了循环。有人可以帮忙吗? 对于那些需要我尝试做的事的例子: if( color == red ) { ... if( car == hyundai ) break; ... }
75 c++ 

5
int64_t的定义
我是C / C ++的新手,所以我对基本类型有几个问题: a)您可以向我解释int64_t和long(long int)之间的区别吗?据我了解,两者都是64位整数。有什么理由选择一个? b)我试图int64_t在网上查找的定义,但没有取得太大的成功。我需要咨询有关此类问题的权威信息吗? c)对于int64_t用于编译的代码,我目前包含<iostream>,这对我来说没有太大意义。还有其他包含提供声明的内容int64_t吗?
75 c++  c  integer  long-integer 

6
在C ++标头中定义常量变量
我正在研究的程序具有适用于所有类的许多常量。我想制作一个头文件“ Constants.h”,并能够声明所有相关的常量。然后在其他课程中,我可以只包含#include "Constants.h。 我使用#ifndef...#define ...语法使其正常工作。但是,我更喜欢使用const int...常量的形式。我不太确定该怎么做。
75 c++  header  constants 

2
多图比矢量图有什么优势?
我不明白,如果我们可以创建向量图或集合图,为什么存在多图。对我而言,唯一的区别是: 使用equal_range在多重映射为获得一个关键的要素和载体,我们只需使用的地图[]运营商,拥有元素的矢量。 使用multimap.insert(make_pair(key,value))在多重映射为添加元素和map_of_vectors[key].push_back(value)在载体的图谱。 那么为什么要使用多图呢?对我来说,拥有一个向量要好于两个迭代器来获取键的所有值。 这个问题也适用于向量的unordered_map和unordered_multimap。
75 c++  stl  map  multimap 



4
std :: map密钥类必须满足哪些要求才能成为有效密钥?
我想将给定类的对象映射到另一个类的对象。但是,我想用作键的类不是我编写的,它很简单struct,只有几个值。std :: map对其内容进行排序,我想知道它是如何执行的,是否可以将任何任意类用作键,或者是否需要定义一组需求(操作符和其他内容)。 如果是这样,我可以为实现操作符映射使用的类创建一个包装器。我只需要知道我首先需要实现的内容,而在网上找到的类的引用都没有指定它们。
75 c++  stl  map  key 



10
为什么对于不能TriviallyCopyable的对象,std :: memcpy的行为将无法定义?
来自http://en.cppreference.com/w/cpp/string/byte/memcpy: 如果对象不是TriviallyCopyable(例如标量,数组,C兼容结构),则该行为是不确定的。 在我的工作中,std::memcpy很长时间以来,我们一直使用以下方法按位交换不可TriviallyCopyable的对象: void swapMemory(Entity* ePtr1, Entity* ePtr2) { static const int size = sizeof(Entity); char swapBuffer[size]; memcpy(swapBuffer, ePtr1, size); memcpy(ePtr1, ePtr2, size); memcpy(ePtr2, swapBuffer, size); } 从来没有任何问题。 我了解滥用std::memcpy非TriviallyCopyable对象并导致下游未定义行为是微不足道的。但是,我的问题是: std::memcpy与非TriviallyCopyable对象一起使用时,为什么自身的行为不确定?为什么标准认为有必要指定该标准? 更新 针对此帖子和该帖子的答案已修改了http://en.cppreference.com/w/cpp/string/byte/memcpy的内容。当前的描述是: 如果对象不是TriviallyCopyable(例如标量,数组,与C兼容的结构),则除非程序不依赖于目标对象的析构函数的影响(不是由memcpy)运行,否则行为是不确定的。目标对象(以结束,但不是以开头memcpy)是通过其他一些方式(例如,新放置)来启动的。 聚苯乙烯 @Cubbi的评论: @RSahu如果可以保证UB下游,它将使整个程序未定义。但我同意,在这种情况下似乎有可能绕过UB,并相应地修改了cppreference。

8
如何使C ++ cout不使用科学计数法
double x = 1500; for(int k = 0; k<10 ; k++){ double t = 0; for(int i=0; i<12; i++){ t += x * 0.0675; x += x * 0.0675; } cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl; } 这个输出 Bas ana:3284.78 Son faiz:1784.78 Son ana:5069.55 安娜(Bas ana):7193.17儿子·法兹(Son faiz):3908.4儿子·安娜(Son ana):11101.6 安娜(Bas …

30
适用于Windows的最佳C ++ IDE或编辑器
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 在Windows上使用的最佳C ++ IDE或编辑器是什么?我使用Notepad ++,但是Visual Studio中缺少IntelliSense。
74 c++  windows  ide  editor 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.