我收到了错误
error: 'INT32_MAX' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
但我已经包括在内了
#include <stdint.h>
Run Code Online (Sandbox Code Playgroud)
我正在使用命令编译(g ++(GCC)4.1.2 20080704(Red Hat 4.1.2-44))
g++ -m64 -O3 blah.cpp
Run Code Online (Sandbox Code Playgroud)
我需要做任何其他事情才能编译吗?还是有另一种C++方式来获取常量" INT32_MAX"?
谢谢,如果有什么不清楚,请告诉我!
我想和之std::accumulate合作std::min.像这样的东西(不会编译):
vector<int> V{2,1,3};
cout << accumulate(V.begin()+1, V.end(), V.front(), std::min<int>);
Run Code Online (Sandbox Code Playgroud)
可能吗?是否可以不编写包装函数std::min?
我知道我可以用lambdas做到这一点:
vector<int> V{2,1,3};
cout << std::accumulate(
V.begin()+1, V.end(),
V.front(),
[](int a,int b){ return min(a,b);}
);
Run Code Online (Sandbox Code Playgroud)
而且我知道有std::min_element.我不是要找到min元素,我需要std::accumulate和我的库结合std::min(或::min),它允许像C++中的表达式一样进行函数编程.
我试图在我的c ++代码中包含头文件位/ stdc ++,但似乎编译器不支持它,有没有办法让它工作?
我使用OS X Yosemite 10.10.2和Xcode 6.1.1
错误:将'const A'作为'void A :: hi()'的'this'参数传递,丢弃限定符[-fpermissive]
我不明白为什么我得到这个错误,我没有返回任何东西只是传递对象的引用,就是这样.
#include <iostream>
class A
{
public:
void hi()
{
std::cout << "hi." << std::endl;
}
};
class B
{
public:
void receive(const A& a) {
a.hi();
}
};
class C
{
public:
void receive(const A& a) {
B b;
b.receive(a);
}
};
int main(int argc, char ** argv)
{
A a;
C c;
c.receive(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
@编辑
我使用const正确性修复它但现在我试图在同一个方法中调用方法并得到相同的错误,但奇怪的是我没有传递对此方法的引用.
#include <iostream>
class A
{
public:
void sayhi() const
{
hello();
world();
}
void hello() …Run Code Online (Sandbox Code Playgroud) 我有一个数组a[n]。号码n是我们输入的。我需要找到的最小的产品a[i]和a[j]如果:
1) abs(i - j) > k
2)a[i] * a[j]最小化
这是我的解决方案(非常幼稚):
#include <iostream>
using namespace std;
#define ll long long
int main() {
ll n,k; cin >> n >> k;
ll a[n]; for(ll i=0;i<n;i++) cin >> a[i];
ll mn; bool first = true;
for(ll i=0;i<n;i++) {
for(ll j=0;j<n;j++) {
if(i!=j)
if(abs(i-j) > k) {
if(first) {
mn = a[i]*a[j];
first = false;
} else if(a[i]*a[j] < mn) mn = a[i]*a[j]; …Run Code Online (Sandbox Code Playgroud) 为了理解贪婪方法和动态编程等高级算法概念,首先需要精通递归.
我对递归比较新.每当提出问题时,首先要记住的是使用迭代的解决方案.即使我知道递归方法的含义及其工作方式,但很难以递归方式进行思考.
请回答以下问题,以帮助解决问题:
1)任何迭代方法都可以用递归代替,反之亦然吗?
例如,如何以递归方式打印大小为n的数组中的元素?
for i 0 to n
Print a[i]
Run Code Online (Sandbox Code Playgroud)
2)如何递归地解决问题?步骤是什么?是否有任何提示可以确定问题可以递归解决?
例如:如果要求打印出字符串的所有子字符串
INPUT: CAT
OUTPUT: CAT,CA,A,AT,T
Run Code Online (Sandbox Code Playgroud)
我可以快速提出迭代方法.使用两个循环可以解决问题.
但递归地如何解决它.如何识别问题可以递归解决.
如果回答我的第一个问题是肯定的,使用两次递归而不是迭代可以解决我的问题?
3)任何人都可以建议我一些材料/资源来彻底理解递归的概念吗?
我将如何在C++中找到"零"位的数量.假设我有一个整数;
int value = 276;
Run Code Online (Sandbox Code Playgroud)
我有100010100位,但我如何计算零?
当提供- 变量在哪里-作为参数时,我得到
PKc的输出typeid(check).name()checkchartypeid.name()
#include<bits/stdc++.h>
using namespace std;
main()
{
char check='e';
cout<<typeid(check).name()<<"\n";
cout<<typeid(typeid(check).name()).name();
}
Run Code Online (Sandbox Code Playgroud)
输出
c
PKc
Run Code Online (Sandbox Code Playgroud)
check即使将from的类型更改为 charto也能得到它double
#include<bits/stdc++.h>
using namespace std;
main()
{
double check=69.666;
cout<<typeid(check).name()<<"\n";
cout<<typeid(typeid(check).name()).name();
}
Run Code Online (Sandbox Code Playgroud)
输出
d
PKc
Run Code Online (Sandbox Code Playgroud)
PS @AsteroidsWithWings 建议的解决方案确实提供了基本概念的框架,但没有具体回答“PKc”的含义。
我本来期望这样一个有用的数据结构被包含在内,C++ Standard Library但我似乎无法找到它.
说我有以下(非常简单)的代码。
#include <iostream>
int main() {
std::cout << std::stoi("12");
}
Run Code Online (Sandbox Code Playgroud)
这在g ++和clang上都可以编译。但是,它无法在MSVC上编译,并出现以下错误:
错误C2039:“ stoi”:不是“ std”的成员
错误C3861:“ stoi”:找不到标识符
我知道这std::stoi是<string>标头的一部分,大概前两个编译器作为标头的一部分<iostream>而后者不包含。根据C ++标准[res.on.headers]
C ++标头可以包括其他C ++标头。
对我来说,这基本上说所有三个编译器都是正确的。
当我的一个学生提交作业时,这个问题就出现了,TA标记为未编译。我当然去修理了。但是,我想防止将来发生此类事件。因此,有没有一种方法可以确定应该包括哪些头文件,而无需在每次检查的三个不同编译器上进行编译?
我能想到的唯一方法是确保对于每个std函数调用都存在一个适当的include。但是,如果您现有的代码长数千行,则搜索起来可能很乏味。有没有更简单/更好的方法来确保交叉编译器的兼容性?
三种编译器的示例:https : //godbolt.org/z/kJhS6U
c++ ×9
algorithm ×2
stl ×2
accumulate ×1
bits ×1
iteration ×1
macos ×1
minimum ×1
optimization ×1
recursion ×1
string ×1
union-find ×1
xcode ×1