有这个向量
vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Run Code Online (Sandbox Code Playgroud)
如何使用累加函数计算其前半部分(即15)的总和?
我可以使用只有迭代器(而不是数字索引)的for循环吗?
我有两个具有相同功能的代码片段,但是一个可以编译,另一个不能。为什么?
这个编译。
vector<int>::iterator it;
if ((it=find(v.begin(),v.end(),2))!=v.end()){
}
Run Code Online (Sandbox Code Playgroud)
这个没有。
if ((vector<int>::iterator it=find(v.begin(),v.end(),2))!=v.end()){
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误。
main.cpp: In function ‘int main()’:
main.cpp:32:28: error: expected primary-expression before ‘it’
main.cpp:32:28: error: expected ‘)’ before ‘it’
main.cpp:44:5: error: expected ‘)’ before ‘return’
Run Code Online (Sandbox Code Playgroud)
PS 可以随意编辑标题 - 我找不到任何描述性的内容。
是否可以使用std::array<class T, std::size_t N>作为类的私有属性,但在类的构造函数中初始化它的大小?
class Router{
std::array<Port,???> ports; //I dont know how much ports do will this have
public:
Switch(int numberOfPortsOnRouter){
ports=std::array<Port,numberOfPortsOnRouter> ports; //now I know it has "numberOfPortsOnRouter" ports, but howto tell the "ports" variable?
}
}
Run Code Online (Sandbox Code Playgroud)
我可能会使用指针,但没有它可以这样做吗?
我重载了operator ++的前缀版本.如果重载函数不是我的类*的成员,我怎么能重载postfix版本?
#include <iostream>
using namespace std;
class Number{
int number;
public:
Number(int inNr):number(inNr){}
friend void operator++(Number& fst);
};
void operator++(Number& fst){
fst.number=fst.number+1;
}
int main(){
Number nr1(1);
++nr1;
//nr1++; error: no 'operator++(int)' declared for postfix '++'
}
Run Code Online (Sandbox Code Playgroud)
*我理解如果它是类的成员,我可以使用dummy int参数来区分它们.
我知道我应该从"operator <<"返回"ostream&",以便能够像这样"链接"运算符
cout<<a<<b<<c;
Run Code Online (Sandbox Code Playgroud)
但是,在下面的代码中,我没有返回"ostream&",并且仍然可以进行链接.为什么?
#include <iostream>
using namespace std;
class CComplexNumber{
float m_realPart;
float m_imagPart;
public:
CComplexNumber(float r,float i):m_realPart(r),m_imagPart(i){}
friend ostream& operator<<(ostream& lhs,CComplexNumber rhs){
lhs<<"["<<rhs.m_realPart<<","<<rhs.m_imagPart<<"]"<<endl;
//MISSING RETURN STATEMENT!
}
};
int main() {
CComplexNumber a(1,2);
CComplexNumber b(3,4);
CComplexNumber c(5,6);
cout<<a<<b<<c;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT
[1,2]
[3,4]
[5,6]
Run Code Online (Sandbox Code Playgroud) 根据typeid(array).name()它是PAN_i在G ++ 4.8.4.我知道P意味着指针和i意味着int,但是什么类型是什么A,为什么只有第二个维度N- 而不是第一个 - M.
我应该输入什么而不是自动输入auto array = new int[M][N]?
是否有分配的方式array来int**?
另一个问题是M和N必须是编译时常量.如果他们不是,我想我唯一的选择是动态C++ 03 2D阵列.
我正在尝试使用此命令在Docker Hub上的 Docker 容器moul/phoronix-test-suite 中获取一个 shell
docker run -t -i moul/phoronix-test-suite /bin/bash
Run Code Online (Sandbox Code Playgroud)
但是在执行命令(二进制文件)之后,容器停止并且我没有进入它。
[slazer@localhost ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0993189463e6 moul/phoronix-test-suite "phoronix-test-suite " 7 seconds ago Exited (0) 3 seconds ago kickass_shockley
Run Code Online (Sandbox Code Playgroud)
它是一个ubuntu:trusty容器。如何将 shell 放入其中,以便我可以向命令 phoronix-test-suite 发送参数?
我需要在一个代码块中多次使用enum类的枚举器,并且我想避免使用C ++ 03中的经典枚举。
enum class Color {RED, GREEN};
{
Color::RED //this works
RED; //how do I make this work (only for this block)?
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用
using namespace Color;
Run Code Online (Sandbox Code Playgroud)
但由于Color不是名称空间,因此它显然不起作用。
我试图分离模板化类的模板化成员函数的声明和定义,但最终出现以下错误和警告.
template <typename I>
class BigUnsigned{
const size_t cell_size=sizeof(I);
std::vector<I> _integers;
public:
BigUnsigned();
BigUnsigned(I);
friend std::ostream& operator<<(std::ostream& out, const BigUnsigned& bu);
};
std::ostream& operator<<(std::ostream& out, const BigUnsigned& bu){
for (auto integer : bu._integers){
out<<integer<<std::endl;
}
return out;
}
Run Code Online (Sandbox Code Playgroud)
../hw06/bigunsigned.h:13:77:警告:朋友声明'std :: ostream&operator <<(std :: ostream&,const BigUnsigned&)'声明一个非模板函数[-Wnon-template-friend]的朋友std :: ostream&operator <<(std :: ostream&out,const BigUnsigned&bu); ^ ../hw06/bigunsigned.h:13:77:注意:(如果这不是你想要的,请确保已经声明了函数模板,并在函数名后添加<>)../hw06/bigunsigned .h:16:51:错误:无法使用模板名称'BigUnsigned'而没有参数列表std :: ostream&operator <<(std :: ostream&out,const BigUnsigned&bu){^ ../hw06/bigunsigned.h :在函数'std :: ostream&operator <<(std :: ostream&,const int&)':../ hw06/bigunsigned.h:17:28:error:请求'bu'中的成员'_integers',这是非类型'const int'的表达式(auto integer:bu._integers){^
当我加入这样的声明和定义时,一切都很好.
template <typename I>
class BigUnsigned{
const size_t cell_size=sizeof(I); …Run Code Online (Sandbox Code Playgroud) c++ ×8
c++11 ×4
arrays ×2
templates ×2
vector ×2
accumulate ×1
bash ×1
ckeditor ×1
class ×1
containers ×1
docker ×1
dockerfile ×1
dynamic ×1
enums ×1
iterator ×1
javascript ×1
linux ×1
overloading ×1
std ×1