小编bac*_*aci的帖子

C++ STL访问向量元素

vector.at(i)和之间有什么区别vector[i]

vector<int> myVector(6);
myVector.at(5) = 5;
Run Code Online (Sandbox Code Playgroud)

要么

myVector[5] = 5;
Run Code Online (Sandbox Code Playgroud)

我知道两者都会产生相同的结果,但不知何故,运算符[]更快.我还读到了关于at向量大小(边界)的检查并返回超出范围的错误,而[]没有.

但是我看到如果尝试分配:

myVector[8] = 1;
Run Code Online (Sandbox Code Playgroud)

我在调试模式下得到类似的超出范围错误.

然后是什么意思at?为什么它在STL?

c++ stl vector std

2
推荐指数
1
解决办法
555
查看次数

C++ 98和线程

我正在使用开源图像处理库OpenCV,由于我的算法很复杂,我需要使用多个线程进行视频处理.

如何在C++ 98上进行多线程处理?我知道C++ 11有一个用于线程的内置支持库(std :: thread)但我的平台(MSVC++ 2010)却没有.我还读到了Boost库,它是C++ STL的通用扩展,具有多线程的方法.我也知道MSDN支持(windows.h)我可以为Windows应用程序创建和管理线程.最后,我发现Qt库是一个跨平台的GUI解决方案,它支持线程化.

是否有一种天真的方式(没有任何第三方库)来创建跨平台多线程应用程序?

multithreading opencv c++98

2
推荐指数
1
解决办法
4800
查看次数

C++软件架构和设计

在我的C++程序中,我想创建一个具有宽度,高度,区域等属性的对象.我还想声明使用和更新此属性的方法.

我希望"set"和"get"这些方法以某种方式列在名为WidthManipulator的头文件,名称空间或子类(无论如何是可能的)中.

我想以这种方式创建我的结构的原因是我想使用"get"名称作为另一个类的另一个方法,比如HeightManipulator.

但对于嵌套类,我得到了Rectangle :: WidthManipulator :: Get()的"非静态成员函数非法调用"错误.我也不想创建Manipulator对象,因为这些类没有属性,只是使用和更新父属性的方法......还有一件事,我想使用void返回,这是我自己的一个很好的理由.

class Rectangle{
public:
int width,height;
int area;
int widthreturned;

    class WidthManipulator{
    public:
    void Set(int x){width = x;} 
    void Get(){widthreturned = width};
    };
};
Run Code Online (Sandbox Code Playgroud)

我该如何处理我的问题?我的结构应该是什么?

c++ architecture oop object-oriented-analysis

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

将一个字符串解析为另一个

string A = "myString";

string B;
Run Code Online (Sandbox Code Playgroud)

有没有办法根据A的数据启动B,因此值B随A变化.

B = capture change of A?
Run Code Online (Sandbox Code Playgroud)

编辑:我的初始帖子不完整和误导,我现在找到了答案.我的问题仍然是观察者模式的重复

string

-7
推荐指数
1
解决办法
164
查看次数