小编Cod*_*ash的帖子

不使用指针迭代C风格的数组

我正在学习指针算术并且有一段代码在很长一段时间内给我错误.任何帮助将不胜感激.(我无法在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++ arrays pointers compiler-errors const-pointer

4
推荐指数
1
解决办法
1694
查看次数

一个班级的私人功能可以访问?

我一直在努力学习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)

c++ oop gcc information-hiding class

4
推荐指数
2
解决办法
840
查看次数

std :: vector :: front()和begin()之间的区别

帮助vectorfront()

返回对向量容器中第一个元素的引用.与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++ vector standard-library

4
推荐指数
2
解决办法
5409
查看次数

基于用户输入的运行时功能规范

好吧,因为我用c ++写了很多东西已经有一段时间了,我已经习惯了更现代语言的一些细节.这是一个一直在唠叨我,我相信那里有一个答案.有没有办法在运行时调用用户指定为字符串的函数?无需诉诸某种大规模的开关/ if块?

我所处理的情况可归结为:我已经解决了我在C++中解决的数学相关问题,并指定为"Problem1.cpp/Problem1.h","Problem2.cpp/Problem2 .h"等.每个问题都有一个函数调用problemX()(X问题的数量),这个函数启动了解决方案.在程序开始时,我想问用户"你想解决哪个问题?" 他们指定了一个数字.然后,我想调用适当的problemX()函数,而不必使用大量的硬编码switch语句(或if语句,或函数指针的索引数组等).

我确信这是可能的,但我不记得该如何去做.有任何想法吗?

c++ user-input runtime function-call

4
推荐指数
1
解决办法
448
查看次数

C 中未初始化指针到底有什么危险

我正在尝试通过 Jim Trevor 的PL 课程“ Cyclone:C 的安全方言”来掌握 C。Trevor 和他的合著者正在尝试制作 C 的安全版本,因此他们消除了语言中未初始化的指针。谷歌搜索了一下未初始化的指针,似乎未初始化的指针指向内存中的随机位置。看来仅此一点就让他们不安全了。如果引用未初始化的指针,则会跳转到内存的不安全部分。时期。但特雷弗谈论它们的方式似乎暗示事情更为复杂。他引用了以下代码,并解释说,当函数 FrmGetObjectIndex 取消引用 f 时,它不是在访问有效指针,而是在访问一个不可预测的地址 \xe2\x80\x94,无论 f 的空间在堆栈上是什么,被分配了。

\n\n

Trevor 所说的“分配 f 空间时堆栈上的内容”是什么意思?默认情况下,“未初始化”指针是否初始化为内存中的随机位置?或者它们的“随机”行为是否与分配给这些指针的内存由于堆栈上的意外行为而填充了奇怪的值(然后引用)有关。

\n\n
Form *f;\n   switch (event->eType) {\n   case frmOpenEvent:\n   f = FrmGetActiveForm(); ...\n   case ctlSelectEvent:\n   i = FrmGetObjectIndex(f, field); ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n

c pointers initialization

4
推荐指数
1
解决办法
2839
查看次数

功能使用了多少内存?

我在接受采访时被问到这个问题 - "功能使用了多少内存?".所以我试着回答说你可以把所有数据变量所占用的所有内存,它实例化的数据结构加起来 - 例如加长4个字节,1个用于char,4个用于int,32位用于32位指针系统,并添加动态分配的任何输入.面试官对我的回答不满意.

我正在学习C++,并会欣赏任何见解.

c++ memory-management function

4
推荐指数
2
解决办法
4918
查看次数

在C++应用程序中查找未引用的方法

我们有一个很大的C/C++遗留源代码树,它已经在块中出现了几次.我们预计会有大量的方法不再使用.是否有工具可以帮助我们快速识别未使用的代码?

c++ code-coverage legacy-code

3
推荐指数
1
解决办法
649
查看次数

使用C++ Boost库提高VS项目的编译速度

我刚刚开始使用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)

c++ performance boost visual-studio

3
推荐指数
1
解决办法
707
查看次数

类数据成员无法访问

我不能为我的生活弄清楚这一点.

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++ compiler-errors class syntax-error visual-studio-2010

3
推荐指数
1
解决办法
362
查看次数

C++中的存储分配语句

我试图识别可以在C++中为变量分配存储的语句.到现在为止,我想出了:

  1. 声明语句:像报表int a;与各种存储,范围符(auto,static,global).
  2. 表达式语句:
    上堆存储可以使用分配malloc,new等等.虽然在技术上对存储pointer在其声明中进行分配.我在这里计算所有这些案件.
    • 具有右侧的赋值expr malloc/new/calloc或被调用函数可能分配存储的函数调用.
    • 函数调用expr,该函数通过引用传递,并在被调用函数中分配存储.

我无法想到任何其他方式,但我有一个暗示可能会有更多.我希望人们能够理解我所要求的内容,即使这个问题可能没有正确表达.:)欢迎任何输入.

c++ variables global-variables

3
推荐指数
1
解决办法
231
查看次数