【问题标题】:How to Systematically use each item in a Vector [closed]如何系统地使用向量中的每个项目[关闭]
【发布时间】:2017-07-02 17:13:30
【问题描述】:

我目前正在创建一个在程序开头初始化一个 int Vector 的程序。随着程序的进行,质数将被添加到向量中。然后,程序将检查给定数字的结果是否 % Vector 中的第一个数字 == 0。如果不是,程序将检查它与第二个数字。有没有办法在 C++ 11 上做到这一点,如果有,怎么做?随时感谢您!

【问题讨论】:

  • 程序员之间的主要语言是代码,而不是故事。展示你的尝试。
  • 看看std::vector你到底不懂什么?
  • Some C++ beginner books 可能有用。
  • @SteveyMcGinins 为什么不做你在问之前忘记做的事情?就像重温教科书一样……
  • @fjardon 如果教科书不包含对向量进行迭代的工作示例,那么它就不是一本好教科书:P

标签: c++ c++11 vector


【解决方案1】:

首先,您需要将质数推入向量中。一开始,除非您另有要求,否则向量是空的。你可以使用这个 sn-p 推送一个素数:

// somewhere you declare your vector
std::vector<unsigned long long> primes;

// code computing a prime number
unsigned long long prime;
.... 

// Push the new prime number at the end of the vector
primes.push_back(prime);

然后你需要遍历向量中的所有素数。您可以使用for 循环:

for(auto prime : primes) {
    . . . // code using the prime number
}

根据 cmets 的建议,您可能希望使用此 for 循环来测试数字的素数。您可以使用for 循环轻松做到这一点:

unsigned long long number = ...; // the number to test
bool is_prime = true;
for(auto prime: primes) {
    bool is_divisible = (0 == number % prime)
    is_prime = is_prime && !is_divisible;
    if(! is_prime)
        break;
}
// then push it in primes if it is prime
if(is_prime)
    primes.push_back(number);

请点击@tobi303 提供的链接,这是一个非常好的 C++ 资源。

C++ 对初学者来说并不容易,但坚持下去会有所收获。

【讨论】:

  • 非常感谢!
  • 我理解这样的问题:如果给定的数字不能被向量中的任何数字所淹没,则针对向量中的所有数字测试给定的数字,那么它是素数,应该添加到向量中。好吧,最后一部分没有明确提及,但如果是这样的话,那么基于范围的 for 循环将无济于事
  • @Javalover,您可以开发不依赖于 3rd 方软件并且可能是可移植的应用程序? (C# 不可移植,java... 有点可移植,但版本之间不可移植)。RUST 具有可比性,但缺乏对平台的支持。 C++ 获得了开放标准,只要编译器遵循标准,保证符合该标准的程序可以在任何硬件上运行
  • @Swift 我从没想过。谢谢。
【解决方案2】:

这是一个简短的 (c++11) 代码示例,其中包含 lambda 和 std::find_if,它将向您展示如何在向量中查找偶数。您可以使用类似的技术来查找奇数、素数等。

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<int> myVector;
    myVector.emplace_back(5);
    myVector.emplace_back(3);
    myVector.emplace_back(4);

    std::vector<int>::iterator it = std::find_if(myVector.begin(), myVector.end(), [](int const& elem) 
        { return elem % 2 == 0; });

    if (it != myVector.end())
        std::cout << "My even number is: " << (*it) << std::endl;
    else
        std::cout << "No even numbers in vector!"<< std::endl;

    system("PAUSE");
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多