我正在学习指针算术并且有一段代码在很长一段时间内给我错误.任何帮助将不胜感激.(我无法在SO上找到它)
int arr [] = {1, 2, 3, 4, 5} ;
for (int i = 0 ; i < 5 ; i++)
{
cout << *arr ;
arr++ ;
}
cout << *arr << endl ;
Run Code Online (Sandbox Code Playgroud)
我无法理解我在codeblocks中遇到的错误.我收到这个声明.
error: lvalue required as increment operand|
||=== Build finished: 1 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud)
在此代码中,我必须迭代数组,而无需解除引用或使用 [] 运算符.
我一直在努力学习C++.最近我遇到了以下代码:
#include <iostream>
using namespace std;
class Point {
private:
double x_, y_;
public:
Point(double x, double y){
x_ = x;
y_ = y;
}
Point() {
x_ = 0.0;
y_ = 0.0;
}
double getX(){
return x_;
}
double getY(){
return y_;
}
void setX(double x){
x_ = x;
}
void setY(double y){
y_ = y;
}
void add(Point p){
x_ += p.x_;
y_ += p.y_;
}
void sub(Point p){
x_ -= p.x_;
y_ -= p.y_;
}
void mul(double …Run Code Online (Sandbox Code Playgroud) 帮助vector说front()
返回对向量容器中第一个元素的引用.与
vector::begin将一个迭代器返回到同一元素的member不同,这个>函数返回一个直接引用.
关于矢量的帮助说 begin()
返回引用向量容器中第一个元素的迭代器.请注意,与member
vector::front(返回对第一个元素的引用)不同,> this函数返回一个随机访问迭代器.
这段代码输出:
char arr[] = { 'A', 'B', 'C' };
vector<char> vec(arr, arr+sizeof(arr));
cout << "address of vec.front() " << (void*)&vec.front() << endl;
cout << "address of vec.begin() " << (void*)&vec.begin() << endl;
Run Code Online (Sandbox Code Playgroud)
地址vec.front() 00401F90
的地址vec.begin() 0030F494
我不明白"直接参考"是什么意思?在begin()不是一个random access iterator只是一个pointer?
有人可以指出区别吗?
好吧,因为我用c ++写了很多东西已经有一段时间了,我已经习惯了更现代语言的一些细节.这是一个一直在唠叨我,我相信那里有一个答案.有没有办法在运行时调用用户指定为字符串的函数?无需诉诸某种大规模的开关/ if块?
我所处理的情况可归结为:我已经解决了我在C++中解决的数学相关问题,并指定为"Problem1.cpp/Problem1.h","Problem2.cpp/Problem2 .h"等.每个问题都有一个函数调用problemX()(X问题的数量),这个函数启动了解决方案.在程序开始时,我想问用户"你想解决哪个问题?" 他们指定了一个数字.然后,我想调用适当的problemX()函数,而不必使用大量的硬编码switch语句(或if语句,或函数指针的索引数组等).
我确信这是可能的,但我不记得该如何去做.有任何想法吗?
我正在尝试通过 Jim Trevor 的PL 课程“ Cyclone:C 的安全方言”来掌握 C。Trevor 和他的合著者正在尝试制作 C 的安全版本,因此他们消除了语言中未初始化的指针。谷歌搜索了一下未初始化的指针,似乎未初始化的指针指向内存中的随机位置。看来仅此一点就让他们不安全了。如果引用未初始化的指针,则会跳转到内存的不安全部分。时期。但特雷弗谈论它们的方式似乎暗示事情更为复杂。他引用了以下代码,并解释说,当函数 FrmGetObjectIndex 取消引用 f 时,它不是在访问有效指针,而是在访问一个不可预测的地址 \xe2\x80\x94,无论 f 的空间在堆栈上是什么,被分配了。
\n\nTrevor 所说的“分配 f 空间时堆栈上的内容”是什么意思?默认情况下,“未初始化”指针是否初始化为内存中的随机位置?或者它们的“随机”行为是否与分配给这些指针的内存由于堆栈上的意外行为而填充了奇怪的值(然后引用)有关。
\n\nForm *f;\n switch (event->eType) {\n case frmOpenEvent:\n f = FrmGetActiveForm(); ...\n case ctlSelectEvent:\n i = FrmGetObjectIndex(f, field); ...\n}\nRun Code Online (Sandbox Code Playgroud)\n 我在接受采访时被问到这个问题 - "功能使用了多少内存?".所以我试着回答说你可以把所有数据变量所占用的所有内存,它实例化的数据结构加起来 - 例如加长4个字节,1个用于char,4个用于int,32位用于32位指针系统,并添加动态分配的任何输入.面试官对我的回答不满意.
我正在学习C++,并会欣赏任何见解.
我们有一个很大的C/C++遗留源代码树,它已经在块中出现了几次.我们预计会有大量的方法不再使用.是否有工具可以帮助我们快速识别未使用的代码?
我刚刚开始使用Boost 1.36.这些库在减少我正在处理的非托管C++软件项目中所需的代码量方面非常有用.
但是,当我尝试使用这些库时,我的编译时间增加了十倍.这几乎抵消了我使用该库所获得的生产力增益.
我正在使用3GHz Intel双核,2GB内存和VS 2003.
我添加了一段代码.
#include "boost/numeric/ublas/matrix.hpp" #include "boost/numeric/ublas/vector.hpp" #include "boost/numeric/ublas/matrix_proxy.hpp" typedef ublas::bounded_matrix <long double,NUM_OF_COLUMNS,NUM_OF_CATEGORIES,ublas::row_major> Matrix; typedef ublas::bounded_vector <long double,NUM_OF_COLUMNS> Vector;
void Print(const Matrix& amount)
{
Vector total;
total.clear();
for (int category = 0; category < NUM_OF_CATEGORIES; category++)
{
PrintLine(ublas::row(amount, category));
total += ublas::row(amount, category);
}
PrintLine(total);
Run Code Online (Sandbox Code Playgroud)
}
void Print(const Matrix& amount)
{
#include "boost/numeric/ublas/matrix.hpp"
#include "boost/numeric/ublas/vector.hpp"
#include "boost/numeric/ublas/matrix_proxy.hpp"
typedef ublas::bounded_matrix <long double,NUM_OF_COLUMNS,NUM_OF_CATEGORIES,ublas::row_major> Matrix;
typedef ublas::bounded_vector <long double,NUM_OF_COLUMNS> Vector;
}
void Print(const Matrix& amount)
{
Vector total;
total.clear(); …Run Code Online (Sandbox Code Playgroud) 我不能为我的生活弄清楚这一点.
int Warrior :: attack ()
{
int hit;
srand(time(0));
if (Warrior.weapon == 6)
int hit = rand() % 5 + 1;
else if (Warrior.weapon == 7)
int hit = rand() % 7 + 4;
else if (Warrior.weapon == 8)
int hit = rand() % 7 + 9;
else if (Warrior.weapon == 9)
int hit = rand() % 7 + 14;
else if (Warrior.weapon == 10)
int hit = rand() % 7 + 19;
std::cout<< "You hit " << hit …Run Code Online (Sandbox Code Playgroud) 我试图识别可以在C++中为变量分配存储的语句.到现在为止,我想出了:
int a;与各种存储,范围符(auto,static,global).malloc,new等等.虽然在技术上对存储pointer在其声明中进行分配.我在这里计算所有这些案件.
malloc/new/calloc或被调用函数可能分配存储的函数调用.我无法想到任何其他方式,但我有一个暗示可能会有更多.我希望人们能够理解我所要求的内容,即使这个问题可能没有正确表达.:)欢迎任何输入.
c++ ×9
class ×2
pointers ×2
arrays ×1
boost ×1
c ×1
function ×1
gcc ×1
legacy-code ×1
oop ×1
performance ×1
runtime ×1
syntax-error ×1
user-input ×1
variables ×1
vector ×1