【问题标题】:How to swap function value and array element in for loop?如何在for循环中交换函数值和数组元素?
【发布时间】:2020-04-23 04:44:59
【问题描述】:

我如何在给定代码中交换元素,因为我收到消息说表达式必须是可修改的左值? 我需要在 for 循环中交换函数值和数组元素。

int niz[2] = { 2,1 };
    int temp;
    for (int i = 0;i < 1;i++)
    {
        temp = niz[i];
        niz[i] = minimum(niz, 2, i);
        minimum(niz, 2, i) = temp;

    }
    for (int i = 0;i < 2;i++)
    {
        cout << niz[i] << endl;
    }

【问题讨论】:

  • 提示:std::swap
  • 什么是minimum
  • 我调用了最小函数
  • 我们看不到。做一个minimal reproducible example
  • 表达式minimum(niz, 2, i) = temp; 没有意义,除非minimum() 返回一个可变引用(或带有赋值运算符的某个对象)。告诉我们这个函数的定义。

标签: c++


【解决方案1】:
#include <iostream>

using namespace std;

void swap(int arr[], int size);

int main(void) {
    int x[2] = {2, 1};

    cout << "Before: ";

    for (int i = 0; i <= 1; i++) {
        cout << x[i] << ", ";
    }

    swap(x, 2);

    cout << endl << "After: ";

    for (int i = 0; i <= 1; i++) {
        cout << x[i] << ", ";
    }

    return 0;
}

void swap(int arr[], int size) {
    for (int i = 0; i < size / 2; i++) {
        arr[i] ^= arr[size - 1 - i];
        arr[size - 1 - i] ^= arr[i];
        arr[i] ^= arr[size - 1 - i];
    }
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2020-03-20
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多