我在创建变量别名时遇到了难题,需要您的帮助。
目的
我的函数采用两个 vector ,但是我想确保 vector 变量“a”将引用较长的一个。同时,我不想复制 vector 。因此,我使用引用来创建别名,但遇到了一个难题。
情况1
由于变量位于if子句中,因此无法看到该变量,但是我需要if子句才能知道哪个更长。
vector<float> conv(const vector<float> &operand1, const vector<float> &operand2){
if (operand1.size() < operand2.size()){
const vector<float> &a = operand2;
const vector<float> &b = operand1;
}
else{
const vector<float> &a = operand1;
const vector<float> &b = operand2;
}
情况2
在if子句之外声明引用。不幸的是,引用必须在声明时进行初始化。但是,我需要if子句来知道将其声明为哪个操作数。
vector<float> conv(const vector<float> &operand1, const vector<float> &operand2){
const vector<float> &a;
const vector<float> &b;
if (operand1.size() < operand2.size()){
&a = operand2;
&b = operand1;
}
else{
&a = operand1;
&b = operand2;
}
有什么办法可以解决这个问题吗?万分感谢。
最佳答案
这是您想要的吗?
vector<float> conv(const vector<float>& op1, const vector<float>& op2) {
const vector<float> &a = op1.size() < op2.size() ? op2 : op1; // the longer one
const vector<float> &b = op1.size() < op2.size() ? op1 : op2; // the other
...
}
关于c++ - 创建变量的别名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33839348/