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++程序中,我想创建一个具有宽度,高度,区域等属性的对象.我还想声明使用和更新此属性的方法.
我希望"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)
我该如何处理我的问题?我的结构应该是什么?
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)
编辑:我的初始帖子不完整和误导,我现在找到了答案.我的问题仍然是观察者模式的重复