如何系统地使用Vector中的每个项目

时间:2017-02-14 12:04:50

标签: c++ c++11 vector

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

2 个答案:

答案 0 :(得分:0)

首先,您需要在向量中推送素数。在开始时,除非您另有要求,否则向量为空。您可以使用此代码段推送素数:

// 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
}

根据评论的建议,您可能希望使用此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 ++对于初学者来说并不容易,但如果你坚持下去就是有益的。

答案 1 :(得分:0)

这是一个简短的(c ++ 11)代码示例,其中包含lambdas和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;
}